[英]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.