禁用JButtons从键盘读取事件

Áng*_*aya 1 java swing jpanel jbutton keyboard-events

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

Hov*_*els 5

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

例如,请在此处查看我的代码示例.