gpt4 book ai didi

java - 在 Java 中同时使用鼠标监听器和按键监听器

转载 作者:行者123 更新时间:2023-12-02 00:06:24 27 4
gpt4 key购买 nike

我有一个程序可以将一个对象向左或向右移动。我想利用它,以便它可以与鼠标监听器和按键监听器一起使用。使用左箭头键和鼠标左键单击执行相同的选项。鼠标右键或箭头键反之亦然。我的代码目前看起来有点像这样,我删除了一些不必要的部分。

public class TetrisApplet extends JApplet implements MouseListener, KeyListener {

public void init() {

tetris.addMouseListener(this);
tetris.addKeyListener(this);

public void mouseReleased(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
if (x > 0 && a[x - 1][y] == 0) {
shape.move(-20, 0);
x--;
}
}
if (e.getButton() == MouseEvent.BUTTON3) {
if (x < 9 && a[x + 1][y] == 0) {
shape.move(+20, 0);
x++;
}
}

}

public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_LEFT:
if (x > 0 && a[x - 1][y] == 0) {
shape.move(-20, 0);
x--;
}
break;
case KeyEvent.VK_RIGHT:
if (x < 9 && a[x + 1][y] == 0) {
shape.move(+20, 0);
x++;
}
break;
}
}

所以我的问题是,有人知道为什么它不适用于 key 吗?我的程序允许使用鼠标单击来移动对象,但是按左箭头和右箭头键绝对不会执行任何操作。我不知道为什么它不起作用。我知道这可能是我所缺少的一些小东西,但非常感谢任何帮助。

最佳答案

我认为问题与焦点有关。具有焦点的组件而不是您的俄罗斯方 block 组件(它没有任何方式来获取焦点)获取关键事件。

快速解决方法是添加:

tetris.requestFocus();

init 方法中,因为您希望焦点在正确组件(?)中开始,在 mouseReleased 中,因为您希望能够再次捕获焦点。

关于java - 在 Java 中同时使用鼠标监听器和按键监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777240/

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