gpt4 book ai didi

Java - 离开窗口后的键盘状态

转载 作者:行者123 更新时间:2023-11-30 09:07:43 26 4
gpt4 key购买 nike

标题可能有点误导,不知道如何简述我的问题。

基本上,我所做的是使用键盘监听器找出按下的键,并据此移动我的游戏角色。

问题是,当您在按住某个键的同时单击窗口外时,我的监听器不会注册 keyReleased 事件。

我试图通过使用鼠标监听器和 mouseExited 事件来修复它,但这并不能一直修复它,有时可以,有时不能。

这是我的实现:

键盘:

public void mouseLeftWindow()
{
for(int i =0;i<KEY_COUNT;i++)
{
keys[i] = false;
}
}

@Override
public void keyPressed(KeyEvent e)
{
int keyCode = e.getKeyCode();
if(keyCode>=0 && keyCode<KEY_COUNT)
{
keys[keyCode] = true;
}
}

@Override
public void keyReleased(KeyEvent e)
{
int keyCode = e.getKeyCode();
if(keyCode>=0 && keyCode<KEY_COUNT)
{
keys[keyCode] = false;
}
}

其中 keys[] 是一个 boolean[] 描述,按下了哪些代码

鼠标:

@Override
public void mouseExited(MouseEvent e)
{
mouseMoved(e);
keyboard.mouseLeftWindow();
}

最佳答案

即使您的鼠标离开组件,您的程序也会监听更多的按键事件。这意味着您在退出时将所有内容设置为 false,但如果仍然按下某个键,它将立即再次设置为 true。我认为您正在寻找 FocusListener 而不是 MouseListener。

    addFocusListener(new FocusListener() {

@Override
public void focusGained(FocusEvent e) {

}

@Override
public void focusLost(FocusEvent e) {
keyboard.mouseLeftWindow();
}

});

关于Java - 离开窗口后的键盘状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886796/

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