我的java代码中有一个JDialog,我希望在用户关闭JDialog时得到指示,当用户关闭JDialog时,java中是否有任何方法可以获取指示?
答案 0 :(得分:2)
只需向其添加WindowListener
并覆盖windowClosing()
或windowClosed()
方法。
WindowListener.windowClosing()
,当窗口关闭时调用WindowListener.windowClosed()
。
示例:强>
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("User attempted to close the dialog!");
}
});
答案 1 :(得分:1)
对于模式对话框,显示对话框的调用后的代码将不会继续,直到对话框关闭。即,
JDialog dialog = new JDialog((Frame)null, true); // true = modal
System.out.println("before");
dialog.setVisible();
System.out.println("after"); // <-- won't happen until the dialog is closed
对于非模态对话框,请像对待任何其他窗口一样使用WindowListener(或WindowAdapter)调用dialog.addWindowListener
并覆盖windowClosing
或{{ 1}},取决于您是否需要阻止关闭或仅检测它。
答案 2 :(得分:1)
为了获得最佳控制,我建议您创建自己的对话框,扩展Jdialog,然后覆盖函数setVisible(boolen value)和dispose()。默认情况下,当用户单击关闭按钮对话框转到funcit setVisible(false)时,您可以使用 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)更改此设置。这是一个简单的代码。
public class MyDialog extends JDialog {
public MyDialog(){
super();
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(new Dimension(200,200));
setVisible(true);
}
public void dispose(){
System.out.println("dialog disposed");
// put your code here
super.dispose();
}
public void setVisible(boolean value) {
System.out.println("dialog set visible : " + value);
// or put your code here
super.setVisible(value);
}
}