我正在开发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可以解决问题,但Dialog保持打开状态。
答案 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()