如何将DefaultListModel转换为List<Object>?

5

我需要把 DefaultListModel (在列表框中)的所有元素放入一个 List<Object> 中。在Java中该如何实现?

3个回答

12
Arrays.asList(model.toArray());

取决于您是想复制数据还是保持连接。 - Tom Hawtin - tackline

7
如果您想复制内容,可以使用DefaultListModel.toArray获取数据,并使用它构建您喜欢的List实现。或者,您可以循环遍历ListModel.getElementAtListModel.getSize次数。
如果您想要集合之间的实时连接而不是副本,请使用AbstractList
 public static List<Object> asList(final DefaultListModel model) {
     return new AbstractList<Object>() {
          @Override public Object get(int index) {
              return        model.getElementAt(index);
          }
          ...
     };
 }

你可能想在那里加入 Class.cast,但是Swing类型不是通用的,存在固有问题。


1
根据古老的API,您需要使用elements()方法并遍历它们,将它们添加到列表中。 DefaultListModel不在与普通集合类相同的层次结构中。
或者使用jarnbjo建议的方法!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接