默认和取消按钮

Button API 提供了一种为按钮分配常用键盘快捷键的简便方法,无需访问分配给 Scene 的加速器列表或显式侦听键事件。即,提供了两种便利方法:setDefaultButtonsetCancelButton

  • setDefaultButton 设置为 true 将导致 Button 每次收到 KeyCode.ENTER 事件时触发。

  • setCancelButton 设置为 true 将导致 Button 每次收到 KeyCode.ESCAPE 事件时都会触发。

下面的示例创建一个 Scene,其中有两个按钮,当按下 enter 或 escape 键时会触发这些按钮,无论它们是否聚焦。

FlowPane root = new FlowPane();
        
Button okButton = new Button("OK");
okButton.setDefaultButton(true);
okButton.setOnAction(e -> {
    System.out.println("OK clicked.");
});
        
Button cancelButton = new Button("Cancel");            
cancelButton.setCancelButton(true);
cancelButton.setOnAction(e -> {
    System.out.println("Cancel clicked.");
});
        
root.getChildren().addAll(okButton, cancelButton);
Scene scene = new Scene(root);

如果这些 KeyEvents 被任何父级 Node 使用,则上面的代码将不起作用:

scene.setOnKeyPressed(e -> {
    e.consume();
});