如何关闭使用AbstractDialogAction的对话框




我正在Netbeans上构建一个JavaFX应用程序
我开始使用ControlsFX(http://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就可以了,但对话框仍然打开

ControlsFX邮件列表中的优生学

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

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

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

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

此外,我建议始终重写AbstractDialogAction类的toString()方法,以便从中获得可读的结果

Action response =  dialog.showConfirm();
System.out.println("RESPONSE = "+ response.toString());

隐藏对话框以关闭它=>对话框。隐藏((

相关内容

  • 没有找到相关文章

最新更新