【问题标题】:Binding String ArrayList to JList将字符串 ArrayList 绑定到 JList
【发布时间】:2016-11-28 18:44:03
【问题描述】:

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

下面是我创建的 updateUserList 方法:

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

请注意,模型、用户名和 jl_users 是全局定义的,因此我没有将它们包含在帖子中。

【问题讨论】:

  • 代码不足。对于初学者来说,您的 update 代码创建了一个全新的 JList 对象似乎很奇怪。我宁愿希望您的应用程序包含一个 fixed JList;并且您只更新该 JList 的模型。这就是模型方法的重点:每次更新某些内容时,您不会丢弃您的 UI 组件。换句话说:请转到帮助中心以了解如何编写“东西不是工作问题;因为您根本没有提供足够的信息让我们真正帮助您。
  • 我的代码包含一个新的 JList 对象,因为我的印象是您将项目添加到 JList 的方式。
  • 您不会通过创建新列表将新项目添加到列表中。相反,您最初创建了列表;稍后,您添加/删除列表的元素。长话短说:也许您想简单地阅读有关这些内容的教程? docs.oracle.com/javase/tutorial/uiswing/components/list.html

标签: java jlist


【解决方案1】:

您为什么使用DefaultListModel? 如果您想要一个简单的列表,请像这样使用它

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

或者直接

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

【讨论】:

    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2019-06-21
    相关资源
    最近更新 更多