读书人

windowListener是否放在setVisible之前

发布时间: 2012-05-12 15:39:31 作者: rapoo

windowListener是否放在setVisible之前才有效?
下面是我程序的构造方法:创建一个继承于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());    }} 

读书人网 >J2SE开发

热点推荐