dispose() 高手指点 方法不执行时怎么回事?

sdy330441359 2010-11-09 09:18:12


public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb_login){
jf.setVisible(true);
System.out.println("dispose");
this.dispose();
System.out.println("dispose11111111111");
}
}



控制台结果是
dispose
dispose11111111111

但是this对应的 JDialog 窗口还没关闭啊!
...全文
317 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdy330441359 2010-11-15
  • 打赏
  • 举报
回复
谢谢各位了!这几天很忙没时间上网!
  • 打赏
  • 举报
回复
[Quote=引用楼主 sdy330441359 的回复:]
Java code


public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb_login){
jf.setVisible(true);
System.out.println("dispose");
this.di……
[/Quote]

this.dispose();
这里的this是否是你的窗体对象,如果是外部监听的类,那this代表的就只是这个类,就像6楼的兄弟说的那样,System.out.println(this);将这个对象打印一下,看看是否是指定你要销毁的窗体!希望对你有帮助!

残缺的孤独 2010-11-10
  • 打赏
  • 举报
回复
你可以把JDialog对象声明为类的属性,然后按对象名调用此方法试试
gularess 2010-11-10
  • 打赏
  • 举报
回复
那你setVisible以后再dispose
sunyiz 2010-11-10
  • 打赏
  • 举报
回复
还有一个可能,就是你这个this
可能没有像你预期的正确的指向了你的JDialog
而是指向了其他的的什么
sunyiz 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sdy330441359 的回复:]
我没使用线程啊![/Quote]

没说你使用线程,而是Swing本身是个单线程
任何Swing事件没处理完之前的程序上对Swing界面新的操作都会被忽略
你这个dispose()未执行,很可能是Swing正在处理其他的什么复杂操作
所以用invokeLater可以把这个dispose()排进Swing的事件序列
当Swing把它其他的操作处理完了之后,就会来处理这个dispose()了
sdy330441359 2010-11-09
  • 打赏
  • 举报
回复
1楼的方法我知道,但是窗口没有撤销 占用资源 不好 我不想用
sdy330441359 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunyiz 的回复:]
也可能是Swing线程被占用,尝试楼上的方法,或者


Java code
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb_login){
jf.setVisible(true);
System.out.println("dispose");
……
[/Quote]

我没使用线程啊!
sunyiz 2010-11-09
  • 打赏
  • 举报
回复
也可能是Swing线程被占用,尝试楼上的方法,或者

public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb_login){
jf.setVisible(true);
System.out.println("dispose");
SwingUtilities.invokeLater(new Runnable(){
public void run(){
dispose();
}
});
System.out.println("dispose11111111111");
}
}
gularess 2010-11-09
  • 打赏
  • 举报
回复
setVisible(false)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧