setVisible这个方法一定要放在所有初始化代码后面吗?
比如我写了一个JDialog,代码如下:构造函数{
  initialize();
}private void initialize() {
  this.setSize(400, 200);
  this.setModal(true);
  this.addWindowListener(new java.awt.event.WindowAdapter() {   
public void windowClosing(java.awt.event.WindowEvent e) {
System.out.println("windowClosing()");  }
});
  this.setVisible(true);
}
如果不把this.setVisible(true);放在最后,而是放在前面,比如this.addWindowListener前面,则事件监听器将不会起作用,放到this.setModal(true);之前,模式设置也失效,为什么呢?像JFrame这些容器是否都有这样的问题啊?

解决方案 »

  1.   

    顺序是会有影响 也可能是由于setVisible(true)的定型功能 但该程序在jre 1.6.0_05-b13下测试无区别 可能改进了
      

  2.   

    JDialog缺省的modal属性是true,就是当setVisible(true)之后它将锁定父窗体,而setVisible(true)之后的代码只有在该对话框关了(包括隐藏)之后才继续执行的不知道我这样子是不是说明白了,呵呵
      

  3.   

    Dialog和Frame调用setVisible(true)会造成当前线程阻塞。
      

  4.   

    modal类型的dialog本来就会阻断主线程的啊.
    你modal设为false,应该就不会阻断了.