【问题标题】:JList to list toString() of an ArrayList of ObjectsJList 列出对象的 ArrayList 的 toString()
【发布时间】: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() 类似的方式工作。我只想为元素提取一个字符串值并将这些值用于我的列表。

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

非常感谢!

【问题讨论】:

    标签: java swing user-interface arraylist jlist


    【解决方案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 法学学士

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-13
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        • 2021-12-11
        相关资源
        最近更新 更多