禁用JButtons从键盘读取事件

时间:2012-08-14 03:03:08

标签: java swing jpanel jbutton keyboard-events

我有两个JPanel。在第一个中我有3个JButtons,第二个是根据从键盘读取的事件绘制图像。如果我用setEnabled(false);设置JButtons,我可以像我期望的那样使用键盘事件(如果我向上按箭头,图像会向上移动),但是当按钮启用时,图像没有任何反应。甚至,如果我按空格键,它就像我点击按钮一样。

1 个答案:

答案 0 :(得分:5)

问题不在于JButtons,而是因为您使用的是KeyListener。如果你能避免使用KeyListe并使用Key Bindings,那就不要将KeyListeners与Swing GUI一起使用。 KeyListeners仅在被侦听的组件具有焦点时才起作用,并且当您存在JButton时,它们将获得焦点并阻止您的KeyListener工作。密钥绑定,如果做得好,可以避免这个问题。

例如,请参阅我的代码示例here

相关问题