我已经使用以下功能来关闭舞台,同时按下退出键它工作正常但是我的键盘选项卡聚焦在桌面上它无法正常工作..
scene.setOnKeyPressed(new EventHandler<KeyEvent>()
{
@Override
public void handle(KeyEvent evt)
{
if(evt.getCode().equals(KeyCode.ESCAPE))
{
dialogStage.close();
}
}
});
答案 0 :(得分:3)
似乎KeyEvent
事件正由子节点TableView
使用。因此,正确的方法是附加EventFilter
而不是EventHandler
:
scene.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent evt) {
if (evt.getCode().equals(KeyCode.ESCAPE)) {
stage.close();
}
}
});
要查看事件处理程序和过滤器之间的区别,请参阅Handling JavaFX Events。
答案 1 :(得分:0)
我遇到了同样的问题,但发现KeyEvent
的目标是TableView
,而不是父级,这就是为什么父级没有获得Esc
事件的原因。
我的变体基于EventHandler
(bubbling phase):
myTable.setOnKeyReleased(event -> {
if (event.getCode() == KeyCode.ESCAPE) {
stage.close();
}
});