下面是我程序的构造方法:创建一个继承于JDialog的类,添加窗口监听器,将这个Dialog设置为可见。
这是正常执行的
- Java code
public LoginDialog(JDBC jdbc, JFrame frame) { super(frame, true); this.jdbc = jdbc; this.setLayout(null); initComponent(); this.setSize(300, 250); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); this.setVisible(true); }
可是之前我的代码是:
- Java code
public LoginDialog(JDBC jdbc, JFrame frame) { super(frame, true); this.jdbc = jdbc; this.setLayout(null); initComponent(); this.setSize(300, 250); this.setVisible(true); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); }
这样的代码,根本没有,就好像没有添加窗口监听器一样,为什么一定要写在setVisible那个方法之前,才有效呢?
------解决方案--------------------
模态窗口和非模态的区别吧。楼主可以找相关资料
- Java code
import java.awt.Dialog;import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class LoginDialog extends Dialog { public LoginDialog(Frame frame) { super(frame, false);//true,false 切换 try { this.setLayout(null); this.setSize(300, 250); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); this.setVisible(true); }finally { System.out.println("veryGood");//本来想模拟关掉模态窗口,打印,结果,还没想到好点的办法打印。 } } public static void main(String[] args) throws Exception { new LoginDialog(new Frame()); }}