【发布时间】:2013-05-18 09:03:19
【问题描述】:
我有多个自定义对话框,我想要一种简单的方法来指定关闭操作。首先,我使用匿名的内部 windowListener 类并以这种方式为每个对话框指定关闭方法。
我认为创建自己的类并实现 WindowListener 类并为所有对话框指定一种窗口关闭方法会更有效。
所以我这样做了,效果很好。
public class WindowWatcher implements WindowListener{
@Override
public void windowClosing(WindowEvent e) {
System.out.println("Are you sure you wish to exit?");
int Answer = JOptionPane.showConfirmDialog(frame, "Are you sure want to exit?", "Quit", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (Answer == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
}
注意:类中还有其他实现的方法..
无论如何,我遇到的问题是当我单击退出时,然后单击否,然后我尝试继续一个对话框并说单击确定.. 没有任何反应。
我知道这与调用 JOptionPane 的 UNINITIALIZED_VALUE 有关。
我需要查看此 UNINITIALIZED_VALUE 的调用选项窗格。我想??
类似:
optionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);
上面的代码假设我可以访问 optionPane。但是,在我的“WindowWatcher”类中,我无权访问它。
有什么想法可以做到这一点吗?也许我可以将 e.GetSource() 转换为 JOptionPane..
编辑。
((JOptionPane)e.getSource()).setValue(JOptionPane.UNINITIALIZED_VALUE);
上述方法无效。 "JDialog 不能转换为 JoptionPane"
非常感谢!
【问题讨论】:
-
JOptionPane 也有 CANCEL,我错过了目标
-
请您在 Q 正文中丢失编辑,查看是否重要
标签: java swing joptionpane jdialog windowlistener