java - NetBeans 默认 Jlist 将其更改为 arraylist

标签 java swing netbeans arraylist jlist

基本上,我有 NetBeans 中 GUI 生成器的默认创建者生成此代码:

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 而不是一个 vector ,我可以通过按钮使用该 ArrayList 的添加和删除功能。我是 GUI 世界的新手,我一直在尝试几种不同的方法(我不知道将 DefaultListModel 放在哪里才能使其正常工作)。请尽可能具体地回答这个问题。

我真正需要的是一个 Jlist 代码,我可以将此代码更改为一个 ArrayList,如果我说 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 的 addElement对于持有大约 200 个或更多项目的模型来说相对较慢。将 Object 数组传递给 JList(E[] listData)比使用 DefaultListModel 单独添加元素更快,因为新的 AbstractListModel 是基于 List 元素创建的。 bug report对此进行了讨论并提出了替代方案。 .

关于java - NetBeans 默认 Jlist 将其更改为 arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16052656/

相关文章:

c - 从终端执行时 Netbeans EXE 不工作 - CentOs

java - 失败: alter table comment drop foreign key

java - 子列表内使用 HashMap 进行映射

使用 GridBagLayout 调整 Java Swing 组件的大小

java - 从包 swing 导入 xml 文件

java - jList 不显示来自自定义模型的数据?

java - 如何使用 netbean 调试/单步执行简单的 java 'main' 应用程序?

Java-按给定顺序迭代for循环

Linux 下 Eclipse 中 Java 体积没有变化

java - 计算 JTable 中单元格的尺寸