Я делаю небольшую программу для тестирования KeyListener
, создавая основной класс и только класс, реализующий его. Я начал делать класс в классе, реализации ключевого слушателя, и добавив строку:KeyListener Не работает/Не называется?
this.addKeyListener(new Handler());
Но это не сработало, так что я сделал основной класс реализации ключевого слушателя, и до сих пор KeyPressed
/набранный/освобожден не вызываются. Ive сократил класс много, так вот она:
public class Game_Main extends JPanel implements KeyListener{
JLabel ship = new JLabel();
JLabel bg = new JLabel();
static JFrame frame;
public Game_Main(){
setPreferredSize(size);
this.addKeyListener(this);
}
public static void main(String[] args){
Game_Main g = new Game_Main();
frame = new JFrame();
frame.setPreferredSize(size);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(g);
frame.setVisible(true);
}
public void keyTyped(KeyEvent e) {
System.out.println("ds");
}
}
Попробуйте определить, какой ключ является типом, используя KeyEvent в требуемом методе. – iWumbo
1) Для Swing обычно используют привязки клавиш на основе AWT на нижнем уровне, KeyListener. Подробнее о том, как их использовать, см. [Как использовать привязки клавиш] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html). 2) «JPanel» обычно не фокусируется на ключевых событиях. –
Возможный дубликат [KeyListener не работает (requestFocus не фиксирует его)] (http://stackoverflow.com/questions/18029136/keylistener-not-working-requestfocus-not-fixing-it) –