为什么ComboBoxes会使用KeyCode.ESCAPE以及解决方法是什么?

时间:2013-08-08 18:31:56

标签: java javafx-2

在我的独立JavaFX 2应用程序中,按下Escape键会触发关闭应用程序的事件。但后来开始没有偶尔工作。通过进一步的测试,我意识到当主显示器上的几个ComboBox组件中的任何一个都有焦点时,击中Escape什么也没做。但是,如果你然后单击一个TableView,TextBox,Button等给他们焦点,它将工作正常。如果焦点返回到ComboBox,它也会再次停止。无论哪个项目具有焦点,将触发事件更改为其他KeyCodes似乎都可以解决问题。

如此专注的ComboBox似乎正在消耗KeyCode.ESCAPE事件。但为什么?有没有办法解决这个问题,而不会让他们无法获得焦点或将事件处理程序更改为其他键?

1 个答案:

答案 0 :(得分:1)

我认为它包含的ListView弹出窗口使用 ESCAPE 键码,因为当打开ListView弹出窗口时,按下转义键将关闭它。如果您使用OttPrime提到的EventFilter,它应该按预期工作...

    scene.addEventFilter(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>()
    {
        @Override
        public void handle(KeyEvent ke)
        {
            if (ke.getCode() == KeyCode.ESCAPE)
            {
                shutDownApp(true);
            }
        }
    });