当前位置: 首页 > 面试题库 >

为什么不能将ArrayList直接添加到Jlist?

鲁旭
2023-03-14
问题内容

我试图将ArrayList添加到Jlist,但我给出的唯一理解是编写这样的代码:

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

让我感到困惑的是,为什么我不能像这样直接将ArrayList直接添加到Jlist中:

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

提前致谢。


问题答案:

包含“ helper”构造函数的目的是使使用JList简单数据结构更加容易。

JList(和许多Swing组件)实际上是指与提供实际数据视图模型中使用。

原始设计可以追溯到将Swing纳入主库之前(在JDK 1.3之前),并且在引入collections
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,但我给出的唯一理解方法是编写如下代码: 让我困惑的是,为什么我不能像这样直接把数组列表添加到Jlist中: 先谢谢你。

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

  • 问题内容: 我看到许多人试图将Android设备直接连接到SQL Server或MySql这样的数据库中,答案始终是相同的:使用Web服务。为什么不直接将Android设备与数据库连接?我的Android应用程序使用的是本地网络。 问题答案: 有很多原因。 安全性-如果用户具有直接访问权限,则他们可以从您的数据库中获取任何信息。另外,他们将在您的数据库中输入密码。因此,如果您使用的SQL Serv

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

  • 问题内容: 我想声明一个type 。 为什么以下原因给我一个错误: 但是以下工作原理: ? 问题答案: 只能引用类型,不能引用基元。是一类,而不是原始的。 声明时,您将创建一个将存储类型而不是原始类型的。 如果您想了解基本类型和引用类型之间的区别,请查看http://pages.cs.wisc.edu/~hasti/cs302/examples/primitiveVsRef.html