javafx:如何将 Enter 键绑定到按钮,并在单击事件时触发事件?

2022-09-03 12:15:16

基本上,我有一个位于a中,当它被点击时,它会执行一个任务列表。现在我想将键绑定到此按钮,以便在单击它或按 Enter 键时,它会执行任务列表。okayButtonstageEnter

    okayButton.setOnAction(e -> {       
           .........
        }
    });

我该怎么做?我已经阅读了以下帖子。但是,它并没有帮助我实现我想做的事情。


答案 1

首先,在按钮上设置一个汉德尔:

okayButton.setOnAction(e -> {       
       ......
});

如果按钮具有焦点,则按 Enter 将自动调用此处理程序。否则,您可以在方法中执行此操作:start

@Override
public void start(Stage primaryStage) {
      // ...
      Node root = ...;
      setGlobalEventHandler(root);

      Scene scene = new Scene(root, 0, 0);
      primaryStage.setScene(scene);
      primaryStage.show();
}

private void setGlobalEventHandler(Node root) {
    root.addEventHandler(KeyEvent.KEY_PRESSED, ev -> {
        if (ev.getCode() == KeyCode.ENTER) {
           okayButton.fire();
           ev.consume(); 
        }
    });
}

如果您只有一个此类按钮,则可以改用以下方法。

okayButton.setDefaultButton(true);

答案 2

可以使用绑定动态更改当前焦点按钮的默认按钮属性

btn.defaultButtonProperty().bind(btn.focusedProperty());

推荐