首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让DefaultListModel使用LinkedList

让DefaultListModel使用LinkedList
EN

Stack Overflow用户
提问于 2010-02-02 19:35:26
回答 3查看 3.4K关注 0票数 2

可以让DefaultListModel使用LinkedList的内容来显示吗?

然后将其与JList一起使用。

EN

回答 3

Stack Overflow用户

发布于 2010-02-02 19:42:54

是的,这是可能的:您只需将AbstractListModel子类化并重写getElementAtgetSize,即可调用底层的LinkedList

代码语言:javascript
复制
public class MyListModel extends AbstractListModel {
  private final List<?> l;

  public MyListModel(List<?> l) {
    this.l = l;
  }

  public Object getElementAt(int index) {
    return l.get(index);
  }

  public int getSize() {
    return l.size();
  }
}

警告:当实现ListModelTableModel并使用List支持模型时,我建议使用ArrayList而不是LinkedList来确保访问给定元素时的O(1)访问时间。

票数 4
EN

Stack Overflow用户

发布于 2010-02-02 19:44:10

DefaultListModel使用Vector作为支持列表。这是一个私有成员,因此您实际上没有选项扩展和覆盖它的工作方式。如果必须使用LinkedList,则可能必须编写自己的列表模型实现(例如,像默认列表模型那样扩展AbstractListModel ),或者遍历列表并将每个对象添加到列表模型中。

票数 2
EN

Stack Overflow用户

发布于 2010-02-02 19:44:07

除非您将其子类化并覆盖所有实现的方法,否则不会。但是您可以将LinkedList中的所有元素添加到DefaultListModel中(填充基础向量)

代码语言:javascript
复制
for (Object element : linkedList)
    model.addElement(element);

或者使用LinkedList/List/Collection作为源来编写您自己的AbstractListModel实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2183669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档