Используется при добавлении новых данных в модель данных (поэтому текущие индексы выбора должны быть перемещены). Если 2 означает «недавно добавленный и выбранный», то ваш результат будет:
[0,0,0,1,1,1,0,0,0,0] == [3A,4,5L]
-> add after [0,0,0,1,2,2,2,1,1,0] == [3A,4,5,6,7,8L]
-> add before [0,0,0,2,2,2,1,1,1,0] == [3,4,5,6A,7,8L]
То, что вы видите здесь, является функцией * DefaultListSelectionModel - добавление индексов внутри текущего выделения автоматически расширяет выделение.
Начните, например, с выбранного индекса 1, затем вставьте три строки в индекс три:
[1,0,0,0,0,0,0,0,0,0]
-> add after [1,0,0,0,0,0,0,0,0,0]
Обратите внимание, что ваше представление выбора вводит в заблуждение, нулей на самом деле нет. Лучший способ напечатать состояние выбора:
private static void printSelection(ListSelectionModel model) {
System.out.print("[");
for (int i = model.getMinSelectionIndex(); i <= model.getMaxSelectionIndex(); i++) {
if(i > model.getMinSelectionIndex()) {
System.out.print(",");
}
if(model.isSelectedIndex(i)) {
System.out.print(i);
if(i == model.getAnchorSelectionIndex()) {
System.out.print("A");
}
if(i == model.getLeadSelectionIndex()) {
System.out.print("L");
}
}
}
System.out.println("]");
}
*) Документация DefaultListSelectionModel # insertIndexInterval отличается от интерфейса, см. Также http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4700643 и http://java.net/jira/browse/SWINGX-272