[英]jlist elements are not displaying dynamically
我正在编写客户端-服务器聊天应用程序。 我已经在客户端GUI中创建了jlist,以便可以显示在线客户端。 但是,当创建该客户端GUI的不同对象时,jlist不会显示所有客户端,即,如果在一个对象中创建了一个客户端,则其他对象将不会显示该客户端。 这是我的代码:
DefaultListModel model = new DefaultListModel();
static List<String> Client = new ArrayList<String>();
public GUI() {
initComponents();
}
public GUI(String hostname,int port, String user_name) throws Exception{
initComponents();
my_name = user_name;
s = new Socket("localhost", 80);
Client.add(user_name);
for(int i=0;i<Client.size();i++){
model.addElement(Client.get(i));
}
}
您对Swing中的Concurency有问题,
摆动不是线程安全的
Swing GUi的所有更新都必须在EDT上完成 ,
a) Socket
输出从未通知过EDT
,
b)将一个新Item
添加到从未通知过EDT
的DefaultListModel
,
c)简单的解决方法是包装代码行model.addElement(Client.get(i))
; 到invokeLater()
这个问题可能是关于为什么使用SwingWorker的预订示例
编辑invokeLater of jlist?
,不见
SwingUtilities.invokeLater(new Runnable(){
public void run(){
model.addElement(Client.get(i));
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.