JList 列出对象的 ArrayList 的 toString()

Posted

技术标签:

【中文标题】JList 列出对象的 ArrayList 的 toString()【英文标题】:JList to list toString() of an ArrayList of Objects 【发布时间】:2012-05-06 09:54:25 【问题描述】:

我有一个对象的 ArrayList(一个名为 OrderItem 的类)。 OrderItem 里面有一个 toString() 方法。

我还有一个 GUI 类,其中有一个 JList。我想列出 arrayLists 元素的所有 toString()。

我知道,对于字符串数组列表,您可以使用以下方法将它们显示在 JList 中:

ArrayList<String> myArrayList  = new ArrayList<String>();
myArrayList.add("Value1");
myArrayList.add("Value2");
myJList = new JList(myArrayList.toArray());

但我想列出对象 arrayList 的 toString() 方法,即有类似的东西:

ArrayList<OrderItem> myArrayList  = new ArrayList<OrderItem>();
myJList = new JList(myArrayList.toString());

我意识到 JList 有可能不支持这样的功能,或者存在某种逻辑问题。如果是这样,你能告诉我为什么吗?因为肯定字符串的arrayList 应该以与对象arrayList 的toString() 类似的方式工作。我只想为元素提取一个字符串值并将这些值用于我的列表。

我在网上搜索了答案,但找不到对我有帮助的答案,所以我来到这里尝试解决这个问题。

非常感谢!

【问题讨论】:

【参考方案1】:

默认情况下,JList 显示对象的 toString 值。因此,无需将您的对象转换为字符串。

如果需要,您可以通过创建自定义单元格渲染器来覆盖 JList 的行为。有关详细信息,请参阅How to Use Lists。

【讨论】:

啊,非常感谢!我愚蠢地从未尝试以与添加字符串相同的方式将 ArrayList 的元素添加到 JList。换句话说,我没有意识到它默认显示 toString 。干杯 =)【参考方案2】:

您可以将列表转换为数组,然后放入列表中。

ArrayList<OrderItem> myArrayList  = new ArrayList<OrderItem>();
OrderItem[] items = new OrderItem[myArrayList.size()];
myArrayList.toArray(items);
myJList = new JList(items);

【讨论】:

【参考方案3】:

实际上,toArray() 方法显示了arrayList 中的每一项。 JList 默认不显示任何内容。您必须根据需要设置可见性。

听起来您试图在列表中简单地显示对象的 toString 方法而不是完整的对象;换句话说,您只想显示字符串表示。而不是数组表示。

您可以重写数组以表示您要显示的数据(在构建数组时提供“toString 构造):

ArrayList<> myNewArrayList =  new ArrayList<OrderItem>();
for (int i=0; i< oldArray.size(); i++)
    
    newArray.add(oldArray.get)i).toString(); 

    ...  rest of code  ...

然后使用面板中的新数组,并使用索引作为对象数组的引用进行对象处理。

HTH 法学学士

【讨论】:

以上是关于JList 列出对象的 ArrayList 的 toString()的主要内容,如果未能解决你的问题,请参考以下文章

将自定义对象从 JList 拖放到 JLabel

使用 DefaultListModel 将项目从 ArrayList 添加到 JList

JList 复制选择

如何在 JList 中显示数组列表?

检索 JList 项的数组数据

是否可以更改 Java Swing jList 中项目的名称*显示*?