預設和取消按鈕

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();
});