NetBeans默认Jlist将其更改为arraylist

时间:2013-04-17 06:00:09

标签: java swing netbeans arraylist jlist

基本上,我在NetBeans中使用GUI Builder中的默认创建者来生成此代码:

IPAddressList = new javax.swing.JList();

IPAddressList.setModel(new javax.swing.AbstractListModel() {
    String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
    public int getSize() { return strings.length; }
    public Object getElementAt(int i) { return strings[i]; }
});

AddressList.setViewportView(IPAddressList);

我想要改变的是拥有一个ArrayList而不是一个向量,我可以通过按钮使用该ArrayList的添加和删除功能。我是GUI世界的新手,我一直在尝试一些不同的方式(我不知道在哪里放置DefaultListModel以使其正常工作)。请尽可能具体地回答这个问题。

我真正需要的是一个Jlist代码,我可以将此代码更改为具有ArrayList,如果我说IPAddressList.arraylist.add()它将向此Jlist中的ArrayList添加内容并相应地更新Jlist。删除同样的事情。在此先感谢!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

方法1(可变):

List<String> myList = 
      new ArrayList<>(Arrays.asList("Item 1", 
                                    "Item 2", 
                                    "Item 3", 
                                    "Item 4", 
                                    "Item 5"));

DefaultListModel model = new DefaultListModel();
JList myJList = new JList(model);

更新

model.clear();
for (String item : myList) {
   model.addElement(item);
}

方法2(不可变):

List<String> myList = ...    
JList myJList = new JList(myList.toArray(new String[myList.size()]));

不可否认,第二种方法不使用DefaultListModel,但这就是为什么包含它的原因:

对于持有大约200个或更多项目的模型,使用DefaultListModel的addElement相对较慢。传递ObjectJList(E[] listData)的数组比使用DefaultListModel单独添加元素更快,因为基于AbstractListModel元素创建了新的List。这是在bug report中讨论和替代的。