我用 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 创建一个新窗口,仅带有一个文本标签(ta),其中包含所有连接的用户,还要求仅控制框架是否已打开。
然后是它变得困惑的部分:
else {
con.ta.setText(message.substring(26));
}
这里只是应该通过将文本设置为新列表来刷新列表 但它并没有这样做,而是只是删除了窗口。
如何修复它?
之前:
之后:
最佳答案
好吧,我刚刚发现了问题: ConnectedList con = new ConnectedList(); 在所有其他变量的顶部,现在它确实可以工作,
关于java - 通过 setText 更新 TextArea 会清除所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7130899/