0

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

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

4

1 回答 1

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);
            }
        }
    });
于 2013-08-09T20:38:18.707 回答