绑定字符串ArrayList到JList
问题描述:
我已经创建了一个客户端 - >服务器聊天室系统,并且我有一个当前连接的用户列表,它当前显示在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是全局定义,所以我没有在帖子包括他们。
答
为什么使用DefaultListModel
? 如果你想要一个简单的列表只是用它这样
public void updateUserList()
{
jl_users = new JList<String>(users.toArray(new String[users.size()]));
}
或直线前进
jl_users = new JList(users.toArray());
没有足够的代码。对于初学者来说,看起来很奇怪,你的** update **代码会创建一个全新的JList对象。我宁愿期待你的应用程序包含一个**固定的** JList;并且您只更新该JList的模型。这就是模型方法的重点:每次更新内容时,都不要丢弃UI组件。换句话说:请转到帮助中心了解如何编写“不需要的工作问题;因为您根本没有提供足够的信息来帮助我们。” – GhostCat
我的代码包含一个新的JList对象,因为我的印象是您是如何将项目添加到JList中的 – DaveDavidson
您不需要通过创建新列表来添加新项目,而是最初创建列表,然后添加/移除列表中的元素长话短说:也许你想简单地阅读这个东西的教程? https://docs.oracle.com/javase/tutorial/uiswing/components/list.html – GhostCat