在桌面应用程序中使用空格键

时间:2016-07-13 09:43:11

标签: java swing keyevent

我使用Swing编写桌面应用程序。我在框架内JFrameJButton以及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();
    }
}

0 个答案:

没有答案