我有一个对象的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值并将这些值用于我的列表。
我在网上搜索了一个答案,却找不到一个可以帮助我的答案,所以我来这里试图解决这个问题。
非常感谢!
答案 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