按下 esc 时 JavaFx 关闭窗口无法在表视图上工作?

Dhi*_*mal 4 java javafx javafx-2

我已经使用以下功能Stage在按下转义键时关闭了。它工作正常,但当我的桌子有键盘焦点时它不起作用。

scene.setOnKeyPressed(new EventHandler<KeyEvent>() 
{
  @Override
  public void handle(KeyEvent evt) 
  {
     if(evt.getCode().equals(KeyCode.ESCAPE))
     {
        dialogStage.close();
     }
  }
});
Run Code Online (Sandbox Code Playgroud)

Ulu*_*Biy 5

似乎该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();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

要查看事件处理程序和过滤器之间的区别,请参阅处理 JavaFX 事件