首先,感谢您花时间阅读我的问题,我很感激.
这是我现在所拥有的概述:
我正在写一个滑块益智游戏,3比3使用按钮作为网格单元格.我已经为JPanel添加了一个关键监听器,它可以保存这些按钮,并且它们可以很好地响应键盘事件.
然而,这个问题有点奇怪,而且我还没有真正确定它为何会导致这种不稳定的行为.单击其中一个“按钮”后,其中没有一个按钮注册了事件监听器,没有任何按钮移动,但是当您按下键事件时,按键变得无响应.
我的问题是这样的:我知道这是非常模糊的,但这是否会让任何人成为Java问题,或者听起来像我的错误代码背后的所有这些?
我对任何建议都持开放态度,因为这已经困扰了我一个星期了,我仍然不知道是什么导致了这个问题.
再次感谢您抽出宝贵时间仔细阅读此内容.
@trashgod:是的,当然.
public class Test2 extends JPanel{
JButton a = new JButton("A");
Test2(){
setFocusable(true);
// Set layout to grid layout
setLayout(new GridLayout(3, 3));
// Add button
//a.setEnabled(false);
add(a);
// Register key event which shifts it to the next cell when the right arrow is pressed
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
remove(a);
JButton b = new JButton("B");
//b.setEnabled(false);
add(b);
add(a);
validate();
}
}
});
}
}
代码片段的功能:JPanel接收键事件,左箭头键,确切地说,删除按钮’a’,并添加一个新按钮’b’,然后每次都按下’a’按钮.但是,如果您尝试运行该程序,在单击按钮后,它将停止侦听关键事件.
我刚刚考虑过它,它是否与JPanel失去的焦点有关?如果是这样,我应该注意哪些特殊方法来恢复失去的焦点?
谢谢!
(顺便说一句,setEnabled注释是我尝试解决这个问题,只需禁用按钮,但它仍然没有解释如何将丢失的焦点恢复到JPanel,如果那是手头的问题.)