我在java中的框架上附加了一个按键侦听器,当我按下任何键时,我可以检测到按键,但是奇怪的事情正在发生。我的游戏是扫雷游戏,我有一个重新启动按钮,基本上可以清除棋盘并重新挖掘它。奇怪的是,当我用鼠标单击按钮时,一切都正常,并且面板被提醒,但按键侦听器停止工作。更奇怪的是,我有一个 jmenuitem 基本上可以自动单击按钮。所以它就像 restartbutton.doclick()
如果我单击 jmenuitem 重新启动,它会重新启动并清除所有内容,并且按键侦听器仍然起作用。我什至可以看到按钮被点击。有什么想法为什么会发生这种情况吗?
Thanks
这是附加到我的主机上的。这是单击按钮后停止工作的侦听器。
frame.addKeyListener(new KeyListener(){
public void keyReleased(KeyEvent e){
}
public void keyPressed(KeyEvent e){
System.out.println("hey");
int keycode = e.getKeyCode();
if(e.isControlDown() & keycode==KeyEvent.VK_C){
balh blah balh
}
}
public void keyTyped(KeyEvent e){
}
});
建议:
- 您的问题是一个焦点问题,KeyListener 停止工作,因为它正在侦听的容器已失去对 JButton 的焦点。
- 一种解决方案是使 JButton 无法通过调用获得焦点
setFocusable(false)
on it.
- 但我建议您如果可能的话根本不要使用 KeyListener,而是使用键绑定,因为使用绑定就不会出现此问题,而且它是更高级别的构造。
Edit
关于:
将其更改为键绑定的最佳方法是什么?
最好的办法是通过按键绑定教程 http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html并实施那里提出的建议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)