[英]Removing And Adding Tons of Items In JList
目的是将选定的项目从左向右移动,反之亦然。
很少有项目可以正常工作,但是一旦处理了超过20k的许多项目,它就会变得如此缓慢。
DefaultListModel<String> fromModel = (DefaultListModel<String>) fromJList.getModel();
DefaultListModel<String> toModel = (DefaultListModel<String>) toJList.getModel();
int selectedIndex;
while ((selectedIndex = fromJList.getSelectedIndex()) != -1)
{
String itemToRemove = fromModel.remove(selectedIndex);
fromList.remove(itemToRemove);
toList.add(itemToRemove);
toModel.addElement(itemToRemove);
}
DefaultListModel的实现对于这种工作不是最好的。 而且一个接一个地添加/删除也不是很有效,因为它会在每次调用时触发刷新事件。
最好是通过扩展AbstractListModel来创建自己的ListModel。
https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractListModel.html
这个想法是进行所有更新,添加/删除项目,然后调用fireContentsChanged
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.