多个Jlist一一对应
时间: 2023-08-13 17:05:59 浏览: 95
要让多个 JList 一一对应,可以使用一个 Map 来映射每个 JList 和对应的数据源。具体实现步骤如下:
1. 创建一个 Map,用于映射每个 JList 和对应的数据源。
2. 创建多个 JList,并将它们添加到容器中。
3. 在创建 JList 的同时,将它们与对应的数据源关联,并将 JList 添加到 Map 中保存。
4. 在需要修改数据源的时候,根据需要修改对应的数据源,并通知关联的 JList 更新视图。
下面是一个简单的示例代码:
```
Map<JList<String>, List<String>> listMap = new HashMap<>();
List<String> dataList1 = new ArrayList<>();
List<String> dataList2 = new ArrayList<>();
JList<String> list1 = new JList<>(new DefaultListModel<>());
JList<String> list2 = new JList<>(new DefaultListModel<>());
// 将数据源与 JList 关联,并添加到 Map 中保存
listMap.put(list1, dataList1);
listMap.put(list2, dataList2);
// 修改数据源
dataList1.add("item1");
dataList2.add("item2");
// 更新 JList 的视图
listMap.get(list1).forEach(item -> ((DefaultListModel<String>) list1.getModel()).addElement(item));
listMap.get(list2).forEach(item -> ((DefaultListModel<String>) list2.getModel()).addElement(item));
```
在上面的代码中,list1 和 list2 分别与 dataList1 和 dataList2 关联,并添加到 listMap 中保存。在修改数据源时,只需要修改对应的 List 即可,所有与之关联的 JList 都会自动更新。在更新 JList 的视图时,需要从 listMap 中获取对应的数据源,并将数据源中的元素添加到 JList 的 ListModel 中。
阅读全文