默认和取消按钮
Button
API 提供了一种为按钮分配常用键盘快捷键的简便方法,无需访问分配给 Scene
的加速器列表或显式侦听键事件。即,提供了两种便利方法:setDefaultButton
和 setCancelButton
:
-
将
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();
});