JList列出对象的ArrayList的toString()

时间:2012-04-25 16:57:27

标签: java swing user-interface arraylist jlist

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

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

我知道对于字符串的数组列表,您可以使用:

使它们在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()的方式工作。我只是想拉出元素的String值并将这些值用于我的列表。

我在网上搜索了一个答案,却找不到一个可以帮助我的答案,所以我来这里试图解决这个问题。

非常感谢!

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

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

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

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

HTH LLB