我的代码有问题,当我按下向上或向下箭头时没有任何反应。 这是我的代码,对不起我的英语。 这是 Racket 1 的部分, Racket 2 的部分 id 类似。
//--->Racket 1 :
Racket1.addKeyListener(this);
Racket1.setBounds(50, 200, 16, 100); //<----- setBounds (Placer position du JLabel x,y + taille de la plateforme x,y)
Racket1.setBackground(Color.white);
Racket1.setOpaque(true);
Racket1.setFocusable(true); //<----- Permet d'utiliser KeyListener Pour un JLabel
Racket1.requestFocus();
这是 keyListener 的一部分:
public void keyTyped (KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
Racket1.setLocation(Racket1.getX(), Racket1.getY() +20);
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
Racket1.setLocation(Racket1.getX(), Racket1.getY() -20);
}
else if (e.getKeyCode() == 'z') {
Racket2.setLocation(Racket2.getX(), Racket2.getY() +20);
}
else if (e.getKeyCode() == 's') {
Racket2.setLocation(Racket2.getX(), Racket2.getY() -20);
}
}
public void keyReleased(KeyEvent e) {
最佳答案
不要使用 KeyListener。一次只有一个组件可以获得焦点,因此您只能移动其中一个 Racket 。
相反,您应该使用KeyBindings
。 Key Bindings
用于将 Action
绑定(bind)到 KeyStroke
,并且组件不需要具有焦点。
查看Motion Using the Keyboard了解更多信息。 KeyboardAnimation.java
甚至有一个使用两个标签的示例。
关于java - JLabel 的 KeyListener 不适合我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706114/