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()的主要内容,如果未能解决你的问题,请参考以下文章