Подумайте дважды, прежде чем менять поведение по умолчанию. Если у вас нет особого варианта использования, я бы не хотел, чтобы мой список работал иначе, чем где-либо еще:)
Сказав это, вы должны иметь возможность использовать свой собственный ListSelectionModel
:
list.setSelectionModel(new DefaultListSelectionModel() {
@Override
public void setSelectionInterval(int index0, int index1) {
if(super.isSelectedIndex(index0)) {
super.removeSelectionInterval(index0, index1);
}
else {
super.addSelectionInterval(index0, index1);
}
}
});