如何关闭使用Abstract DialogAction的Dialog

时间:2014-05-01 08:54:19

标签: netbeans dialog javafx javafx-8


我正在开发Netbeans构建JavaFX应用程序 我开始使用ControlsFXhttp://fxexperience.com/controlsfx/
我已经实现了一个使用自定义Dialog的简单AbstractDialogAction,因为我希望显示特定数量的按钮。
我这样做

    Action a = new AbstractDialogAction("  button a  ", Dialog.ActionTrait.CLOSING) {
        @Override
        public void execute(ActionEvent ae) {
        }
    };
    ArrayList<Action> actions = new ArrayList<>();
    actions.add(a);
    actions.add(b); // other button
    actions.add(c); // another button
    dialog.actions(actions);
    Action response =  dialog.showConfirm();
使用给定按钮正确显示

Dialog 我的问题是当按下按钮时如何强制Dialog关闭? 我认为设置一个Dialog.ActionTrait.CLOSING可以解决问题,但Dialog保持打开状态。

2 个答案:

答案 0 :(得分:2)

来自ControlsFX邮件列表中的eugener

public void execute(ActionEvent ae) {
        if (ae.getSource() instanceof Dialog ) {
          ((Dialog) ae.getSource()).setResult(this);
       }
}

以上设置Dialog的结果为当前Action并关闭Dialog
但也许这有点多余,因为我可以简单地称之为:

          ((Dialog) ae.getSource()).hide();

.hide()会隐藏Dialog,并将当前操作设置为结果 我无法建议哪个是更好的解决方案(jewelsea建议hide()

另外,我建议始终覆盖类toString()的{​​{1}}方法,以便从以下方面获得可读结果:

AbstractDialogAction

答案 1 :(得分:1)

隐藏对话框以关闭它=&gt; dialog.hide()