2

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

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

我知道对于字符串的arrayList,您可以使用以下方法使它们显示在 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() 类似的方式工作。我只想为元素提取一个字符串值并将这些值用于我的列表。

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

非常感谢!

4

3 回答 3

4

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

JList如果需要,您可以通过创建自定义单元格渲染器来覆盖该行为。有关更多详细信息,请参阅如何使用列表

于 2012-04-25T17:01:26.810 回答
1

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

ArrayList<OrderItem> myArrayList  = new ArrayList<OrderItem>();
OrderItem[] items = new OrderItem[myArrayList.size()];
myArrayList.toArray(items);
myJList = new JList(items);
于 2012-04-25T17:01:14.463 回答
0

实际上,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 法学学士

于 2014-07-24T08:22:07.943 回答