当用户点击其中一个按钮时,我想给按钮“确定”和“取消”一个将要执行的方法:
如何使用我的代码执行此操作?
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Test");
alert.setHeaderText("This is a test.");
alert.setResizable(false);
alert.setContentText("Select okay or cancel this alert.");
alert.showAndWait();
在我的理论中,为其中一个按钮设置动作的代码如下所示:
alert.setActionForButtonOK(OkMethod());
答案 0 :(得分:2)
alert#showAndWait
返回一个包含已按下按钮的可选项(如果已按下否按钮并退出拨号,则返回null
)。使用该结果选择要运行的操作。 E.g。
Optional<ButtonType> result = alert.showAndWait();
if(!result.isPresent())
// alert is exited, no button has been pressed.
else if(result.get() == ButtonType.OK)
//oke button is pressed
else if(result.get() == ButtonType.CANCEL)
// cancel button is pressed
答案 1 :(得分:1)
无需在按钮上注册事件处理程序(而且Dialog
类不能直接访问它的按钮)。您只需检查showAndWait
返回的值,即可获得用户按下的按钮并采取相应措施:
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Test");
alert.setHeaderText("This is a test.");
alert.setResizable(false);
alert.setContentText("Select okay or cancel this alert.");
Optional<ButtonType> result = alert.showAndWait();
ButtonType button = result.orElse(ButtonType.CANCEL);
if (button == ButtonType.OK) {
System.out.println("Ok pressed");
} else {
System.out.println("canceled");
}
答案 2 :(得分:1)
如上所述,对话框通常只是收集一个输入,并且对该输入执行代码的操作是基于查看对话框返回值的内容。 通常。然而,有许多例外原因。例如,自定义对话框可能需要在允许解雇之前验证输入字段,或者按钮可用于调用控制操作等...
在对话框类中,您可以执行以下操作:
final Button btnFoo = (Button) dialog.getDialogPane().lookupButton( buttonTypeFoo );
然后,只需添加一个事件处理程序钩子即可。如果您不希望点击因任何原因而忽略该对话框,请记住使用该事件:
btnFoo.setOnAction( event -> {
onBtnFooClicked();
event.consume();
} );