我使用Swing编写桌面应用程序。我在框架内JFrame
和JButton
以及JTextField
。{/ p>
使用KeyEventDispatcher
我抓住空格键新闻事件Keyevent.VK_SPACE
并点击cancelButton
new KeyEventDispatcher(KeyEvent.VK_SPACE) {
@Override
public void performAction(KeyEvent event) {
cancelButton.doClick();
cancelButton.requestFocus();
}
}
可行,但在cancelButton
其他事件中,将其状态更改为cancelButton.setEnabled(false)
,当我在禁用此cancelButton
后按空格键时,会点击同一帧中的其他按钮。我认为这是系统的选择,但也许我可以阻止这个?我关心的是,按下的空格键执行了KeyEventDispatcher
中声明的一件事。
我想将此空格键更改为键盘上的其他字母,但我想知道我可以使用空格键解决此问题。
知道如何解决这个问题吗?
修改
我尝试使用CTRL
键,但每按一次此键,其他按钮会突出显示,如按TAB
。使用C
键时,同样的操作也会在JTextField
设置时更改此字段的值。
解决
我通过添加event.consume()
并删除cancelButton.requestFocus()
new KeyEventDispatcher(KeyEvent.VK_SPACE) {
@Override
public void performAction(KeyEvent event) {
event.consume();
cancelButton.doClick();
}
}