通过setText更新TextArea会清除所有文本

时间:2011-08-20 09:26:26

标签: java

我在java中创建了一个聊天室,服务器和客户端。

以下代码是我的在线列表搞砸了:

public void run() {
    try {
        while (true) {
            String message = din.readUTF();
            if (message.startsWith("CONNECTEDLISTEDWOOOOOOOOT")) {
                ConnectedList con = new ConnectedList();
                if (demanded == 1) {
                    con.ta.setText(message.substring(26));
                    con.setSize(200, 400);
                    con.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    con.setVisible(true);
                    demanded = 0;
                } else {
                    con.ta.setText(message.substring(26));
                }
            } else {
                ta.append(message+"\n");
                if(!lol.isActive()) {
                    InputStream in = getClass().getResourceAsStream("bleep.wav");
                    AudioStream as = new AudioStream(in);         
                    AudioPlayer.player.start(as);   
                }
            }
        }
    } catch(IOException ie) { System.out.println(ie); }
}

这段代码完美无缺:

if (demanded == 1) {
        con.ta.setText(message.substring(26));
        con.setSize(200, 400);
        con.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        con.setVisible(true);
        demanded = 0;
}

它使用JFrame创建一个新窗口,只需要一个textlabel(ta),其中包含所有连接的用户,还需要控制框架已经打开或不打开。

然后这个部分搞砸了:

 else {
      con.ta.setText(message.substring(26));
 }

这里只是通过将文本设置为新列表来刷新列表 但它没有这样做,只是抹掉了窗户。

我该如何解决?

之前:

enter image description here

后:

enter image description here

1 个答案:

答案 0 :(得分:0)

好吧,我刚刚发现了问题: 连接列表com =新连接列表(); 在所有其他变量的顶部,现在它确实有效,