当前位置: 首页 > 知识库问答 >
问题:

为什么我不能将数组列表直接添加到Jlist中?

杜骏祥
2023-03-14

我正在尝试将ArrayList添加到Jlist,但我给出的唯一理解方法是编写如下代码:

ArrayList<String> labels = new ArrayList<String>();
JList jlist = new JList(labels.toArray());

让我困惑的是,为什么我不能像这样直接把数组列表添加到Jlist中:

ArrayList<String> labels = new ArrayList<String>();
JList jlist = new JList(labels);

先谢谢你。

共有3个答案

夏祺然
2023-03-14

因为 JList 没有接受 ArrayList(或 List)的构造函数。它只能接受数组、ListModelVector。请参阅文档。

数组列表不是数组。不能将 ArrayList 传递给需要数组的方法。

后凯捷
2023-03-14

JList 没有接受列表的构造函数。第一个示例的工作原理是它使用构造函数 JList(Object[])。

熟悉javadoc

邹丰羽
2023-03-14

包含“帮助程序”构造函数是为了更容易地将JList与简单的数据结构一起使用。

<code>JList</code>(以及许多Swing组件)实际上是用于向视图提供实际数据的模型。

最初的设计可以追溯到Swing被合并到主库之前(在JDK 1.3之前)和集合API被引入之前,所以最初的开发人员很可能没有可用的List(因此包含了Vector)。

很可能从那以后就没有人认为适合更新库了(部分原因是可能已经决定不应该包含原始构造函数,但我没有参加那个会议;)

更好/更简单的解决方案是创建自己的模型,该模型使用List作为数据源。

例如...

public class MyListModel<T> extends AbstractListModel<T> {

    private List<T> people;

    public MyListModel(List<T> people) {
        this.people = people;
    }

    @Override
    public int getSize() {
        return people.size();
    }

    @Override
    public T getElementAt(int index) {
        return people.get(index);
    }
}

然后,您可以在需要时简单地将其提供给JList

JList myList = new JList(new MyListModel<MyObject>(listOfMyObjets));
 类似资料:
  • 问题内容: 我试图将ArrayList添加到Jlist,但我给出的唯一理解是编写这样的代码: 让我感到困惑的是,为什么我不能像这样直接将ArrayList直接添加到Jlist中: 提前致谢。 问题答案: 包含“ helper”构造函数的目的是使使用简单数据结构更加容易。 的(和许多Swing组件)实际上是指与提供实际数据视图模型中使用。 原始设计可以追溯到将Swing纳入主库之前(在JDK 1.3

  • 问题内容: 我试图将ArrayList添加到Jlist,但我给出的唯一理解是编写这样的代码: 让我感到困惑的是,为什么我不能像这样直接将ArrayList直接添加到Jlist中: 提前致谢。 问题答案: 包含“ helper”构造函数的目的是使使用简单数据结构更加容易。 的(和许多Swing组件)实际上是指与提供实际数据视图模型中使用。 原始设计可以追溯到将Swing纳入主库之前(在JDK 1.3

  • 问题内容: 我有以下代码: 这段代码: 根据我的Python知识,我会说它覆盖/ ,但是我不确定。你能在这里阐明一下吗? 编辑:我对并不特别感兴趣。我一直在想对象。 问题答案: 我的猜测是,datetime的实现使用slots以获得更好的性能。 使用时,解释器仅为列出的属性保留存储空间,而没有其他内容。这样可以提供更好的性能并使用更少的存储空间,但这也意味着您不能随意添加新属性。 在此处阅读更多信

  • 问题内容: 我对git和詹金斯都很陌生。 我将密钥添加到bitbucket和本地计算机中时: 我可以克隆。 但是,当我将相同的url()添加到Jenkins存储库url时,出现以下错误: 问题答案: 您还需要为Jenkins用户设置ssh密钥。 通常的想法是,您登录到Jenkins框,并成为“ jenkins”用户。您可以为您的Jenkins用户打电话,所以请确保使用正确的名称。一旦成为Jenki

  • 在有趣的功能中,当我将列表添加到其他列表时,它正在添加空列表,我可以找到原因有人可以帮助我这个程序是关于查找给定数组的不同组合

  • 问题内容: 据我了解,a 是定义为 一些特定但未知类型 的 列表 。因此,无论此参数的类型是什么,都应该对其进行扩展,因为在Java中,不能有任何不扩展的类型。那么为什么下面的代码没有被编译呢?它如何违反了不变式 问题答案: 可以指向可以存储不同类型对象的任何类型的列表。 您如何看待,例如,让它添加任何对象是否安全?