关于setVisible的疑问

时间:2008-06-06 05:47:26   来源:论坛整理  作者:  编辑:chinaitzhe
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这些容器是否都有这样的问题啊?
网友回复:没注重过
关注中......
网友回复:顺序是会有影响 也可能是由于setVisible(true)的定型功能 但该程序在jre 1.6.0_05-b13下测试无区别 可能改进了
网友回复:JDialog缺省的modal属性是true,就是当setVisible(true)之后它将锁定父窗体,而setVisible(true)之后的代码只有在该对话框关了(包括隐藏)之后才继续执行的

不知道我这样子是不是说明白了,呵呵
网友回复:Dialog和Frame调用setVisible(true)会造成当前线程阻塞。
网友回复:Frame的不会
网友回复:似乎确实要放到后面,关注下!
网友回复:modal类型的dialog本来就会阻断主线程的啊.
你modal设为false,应该就不会阻断了.
关键字:setVisible,疑问,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面