我有多个自定义对话框,我想要一种简单的方法来指定关闭操作。首先,我使用匿名的内部 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。我认为??
就像是:
optionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);
上面的代码假设我可以访问 optionPane。但是,在我的“WindowWatcher”类中,我无权访问它。
任何想法我怎么能做到这一点?也许我可以将 e.GetSource() 转换为 JOptionPane ..
编辑。
((JOptionPane)e.getSource()).setValue(JOptionPane.UNINITIALIZED_VALUE);
以上没有奏效。“无法将 JDialog 转换为 JoptionPane”
非常感谢!