2016-07-25 70 views
0

我已经创建了一个客户端 - >服务器聊天室系统,并且我有一个当前连接的用户列表,它当前显示在JTextField内的一个按钮上单击,这当前工作正常并显示字符串阵列。但是,我在GUI中添加了另一个组件,即JList。我一直试图创建一个名为updateUserList的方法来更新与所连接用户的JList。我试图使用String类型的DefaultListModel,但是这在JList中什么也不显示,我不确定原因。绑定字符串ArrayList到JList

下面是updateUserList方法我已经创建:

public void updateUserList() 
{ 
    model = new DefaultListModel<String>(); 
    for(String usernames : users) 
     model.addElement(usernames); 
    jl_users = new JList<String>(model); 
} 

请注意,模型,用户名和jl_users是全局定义,所以我没有在帖子包括他们。

+0

没有足够的代码。对于初学者来说,看起来很奇怪,你的** update **代码会创建一个全新的JList对象。我宁愿期待你的应用程序包含一个**固定的** JList;并且您只更新该JList的模型。这就是模型方法的重点:每次更新内容时,都不要丢弃UI组件。换句话说:请转到帮助中心了解如何编写“不需要的工作问题;因为您根本没有提供足够的信息来帮助我们。” – GhostCat

+0

我的代码包含一个新的JList对象,因为我的印象是您是如何将项目添加到JList中的 – DaveDavidson

+0

您不需要通过创建新列表来添加新项目,而是最初创建列表,然后添加/移除列表中的元素长话短说:也许你想简单地阅读这个东西的教程? https://docs.oracle.com/javase/tutorial/uiswing/components/list.html – GhostCat

回答

0

为什么使用DefaultListModel? 如果你想要一个简单的列表只是用它这样

public void updateUserList() 
{ 
    jl_users = new JList<String>(users.toArray(new String[users.size()])); 
} 

或直线前进

jl_users = new JList(users.toArray());