Java 删除和添加JList中的大量项目
其目的是将所选项目从左向右移动,反之亦然。Java 删除和添加JList中的大量项目,java,swing,jlist,Java,Swing,Jlist,其目的是将所选项目从左向右移动,反之亦然。 很少的项目可以很好地工作,但是一旦它处理了很多项目,比如超过20k的项目,它就会变得很慢 DefaultListModel<String> fromModel = (DefaultListModel<String>) fromJList.getModel(); DefaultListModel<String> toModel = (DefaultListModel<String>) toJList.get
很少的项目可以很好地工作,但是一旦它处理了很多项目,比如超过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 fromModel=(DefaultListModel)fromJList.getModel();
DefaultListModel toModel=(DefaultListModel)toJList.getModel();
int-selectedIndex;
而((selectedIndex=fromJList.getSelectedIndex())!=-1)
{
String itemToRemove=fromModel.remove(selectedIndex);
fromList.remove(itemtoreve);
toList.add(itemToRemove);
toModel.addElement(itemToRemove);
}
DefaultListModel的实现并不适合这种工作。
而且逐个添加/删除也不是很有效,因为它会在每次调用时触发刷新事件
最好是通过扩展AbstractListModel来创建自己的ListModel
我们的想法是完成所有更新,添加/删除项目,然后调用fireContentsChanged