当我要打开对话框时,为什么窗口是打开了,但是窗口里面本该显示的组件却一个都显示不出来?

hepeng19861212 2008-02-27 11:29:38
.............(略)
DialogBox dialog=new DialogBox(LogIn.users[index]);
dialog.setTitle("与"+LogIn.users[index].nickname+"聊天中");
dialog.setSize(500,400);
dialog.setVisible(true);
while(true){//接收对方信息,并显示
WaitForPackets packet=new WaitForPackets();
if(!packet.received.equals("")){
dialog.textPane.append(Color.RED,dialog.aUser.nickname+":\n");
dialog.textPane.append(Color.BLACK,packet.received+"\n");
}
}
...................(略)
这是我从我一个程序里摘出的一小段代码。功能是要显示一个对话框,并将接收的信息在这个对话框中显示出来。我的问题是:当我要打开对话框时,为什么窗口是打开了,但是窗口里面本该显示的组件却一个都显示不出来?(我觉得应该是因为那个while(true)死循环导致的)。请解释原因,并给出我一个解决的办法来。谢谢!
...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hepeng19861212 2008-03-17
  • 打赏
  • 举报
回复
aceeci,你说的不对。你应该看到dialog.setVisible(true); 之前是个死循环,根本执行不到这条语句。
KK3K2005 2008-03-17
  • 打赏
  • 举报
回复
while(true)

把你显示的窗口的运行线程占用了
除非到返回 或结束为止
否则窗口永远没机会执行刷新的代码
hepeng19861212 2008-03-17
  • 打赏
  • 举报
回复
this.validate()也试过了。还是不行啊
Alro_DJM 2008-03-14
  • 打赏
  • 举报
回复
这个问题很好嘛,加上一个this.validate()就OK了。
numb1126 2008-03-13
  • 打赏
  • 举报
回复
或者在最后加上this.validate()
aceeci 2008-03-12
  • 打赏
  • 举报
回复
你把dialog.setVisible(true); 放在循环的后面,像这样:
.............(略)
DialogBox dialog=new DialogBox(LogIn.users[index]);
dialog.setTitle("与"+LogIn.users[index].nickname+"聊天中");
dialog.setSize(500,400);

while(true){//接收对方信息,并显示
WaitForPackets packet=new WaitForPackets();
if(!packet.received.equals("")){
dialog.textPane.append(Color.RED,dialog.aUser.nickname+":\n");
dialog.textPane.append(Color.BLACK,packet.received+"\n");
}
}
dialog.setVisible(true);
...................(略)
jy02411368 2008-03-11
  • 打赏
  • 举报
回复
需要刷新

62,614

社区成员

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

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