Я создал начало класса, где при нажатии клавиши со стрелкой вправо будет перемещаться прямоугольник. Но этот код работает только при добавлении setFocusable(true)
. Я прочитал Java Doc и многие предыдущие вопросы о переполнении стека, но я до сих пор не знаю, почему так важно setFocusable
. Пожалуйста, ответьте мне, объясняя только этот код.Использование setFocusable в java
public class start extends JPanel{
int x=0, xa=1;
public start() {
addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent ke){
if(ke.getKeyCode()==KeyEvent.VK_RIGHT){
xa=xa+1;
repaint();
}
}
public void keyTyped(KeyEvent ke){}
public void keyReleased(KeyEvent ke){}
});
setFocusable(true);
}
public void paint(Graphics g){
super.paint(g);
g.fillRect(x+xa,100,40,50);
}
}
Вместо «KeyListener» используйте [привязки клавиш] (https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html#howto) –
Спасибо за предложение, но все же я спрашиваю о setFocusable – user3423267