在我的独立JavaFX 2应用程序中,按下Escape键会触发关闭应用程序的事件。但后来开始没有偶尔工作。通过进一步的测试,我意识到当主显示器上的几个ComboBox组件中的任何一个都有焦点时,击中Escape什么也没做。但是,如果你然后单击一个TableView,TextBox,Button等给他们焦点,它将工作正常。如果焦点返回到ComboBox,它也会再次停止。无论哪个项目具有焦点,将触发事件更改为其他KeyCodes似乎都可以解决问题。
如此专注的ComboBox似乎正在消耗KeyCode.ESCAPE事件。但为什么?有没有办法解决这个问题,而不会让他们无法获得焦点或将事件处理程序更改为其他键?
答案 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);
}
}
});