NetBeans默认Jlist将其更改为arraylist



基本上,我有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);

我想改变的是有一个数组列表而不是一个向量,我可以通过按钮使用数组列表的添加和删除函数。我是GUI世界的新手,我一直在尝试几种不同的方法(我不知道在哪里放置DefaultListModel以使其正确工作)。请尽可能具体地回答这个问题。

我真正需要的是一个Jlist代码,我可以把这个代码变成一个数组列表,如果我说ipaddresslist。ArrayList。add()它会添加一些东西到这个Jlist中的ArrayList并相应地更新Jlist。移除也是一样。提前感谢!

你可以这样做:

方法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,但这里包含了它的原因:

使用DefaultListModel的adelement对于拥有200个或更多项目的模型来说相对较慢。将Object数组传递给JList(E[] listData)比使用DefaultListModel单独添加元素要快,因为新的AbstractListModel是基于List元素创建的。在这个bug报告中对此进行了讨论,并给出了替代方案。

相关内容

  • 没有找到相关文章