如何将方法设置为JavaFX警报按钮

时间:2017-03-26 16:47:14

标签: java javafx alert

当用户点击其中一个按钮时,我想给按钮“确定”和“取消”一个将要执行的方法:

Alert Box

如何使用我的代码执行此操作?

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

3 个答案:

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