我正在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());
隐藏对话框以关闭它=>对话框。隐藏((