Swing的奇怪问题

sxfreesky 2012-10-19 05:26:32
代码如下

public void update(Socket socket) {
try {
SocketRequest req = new SocketRequest(socket);
String message = req.getMessage();
System.out.println("接收到消息:"+message);
JLabel label = new JLabel(message);
allMsgPanel.add(label);
allMsgPanel.revalidate();
viewFrame.validate();
} catch (IOException e) {
e.printStackTrace();
}
}

执行update后,窗口内容被清空。但如果构造JLabel时,使用字面量作为参数,如下

JLabel label = new JLabel("使用字面量参数");

则窗口内容正常。

构造窗口的代码如下

public void createView(){
viewPanel = new JPanel();
viewFrame = new JFrame("消息接收视图");
viewFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

allMsgPanel = new JPanel(new GridLayout(0, 1));

JLabel label1 = new JLabel("第一条消息");
JLabel label2 = new JLabel("第二条消息");

allMsgPanel.add(label1);
allMsgPanel.add(label2);
sendMsgPanel = new JPanel();

viewPanel.add(allMsgPanel);
viewPanel.add(sendMsgPanel);

viewFrame.getContentPane().add(viewPanel);
viewFrame.pack();
viewFrame.setVisible(true);
}


请各位老大帮我看看是怎么回事啊
...全文
260 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
桃园闲人 2012-10-24
  • 打赏
  • 举报
回复
应该是布局问题导致生成的JLabel被覆盖了。
sxfreesky 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

allMsgPanel.revalidate(); 注释掉试试
[/Quote]

还是不行
sxfreesky 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

设断点看看message里面是什么内容
[/Quote]

message是有值的,我从socket客户端发过来的文本
xinyewa 2012-10-21
  • 打赏
  • 举报
回复
allMsgPanel.revalidate(); 注释掉试试
Sad4This 2012-10-20
  • 打赏
  • 举报
回复
设断点看看message里面是什么内容

62,621

社区成员

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

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