gpt4 book ai didi

java - JLabel 的 KeyListener 不适合我

转载 作者:行者123 更新时间:2023-12-02 04:45:27 25 4
gpt4 key购买 nike

我的代码有问题,当我按下向上或向下箭头时没有任何反应。这是我的代码,对不起我的英语。这是 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 。

相反,您应该使用KeyBindingsKey Bindings 用于将 Action 绑定(bind)到 KeyStroke,并且组件不需要具有焦点。

查看Motion Using the Keyboard了解更多信息。 KeyboardAnimation.java 甚至有一个使用两个标签的示例。

关于java - JLabel 的 KeyListener 不适合我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com