Code
JList list = new JList(model) {
private ClearSelectionListener listener;
@Override public void setSelectionInterval(int anchor, int lead) {
if(anchor==lead && lead >= 0 && anchor >= 0) {
if(listener.isDragging) {
addSelectionInterval(anchor, anchor);
}else if(!listener.isInCellDragging) {
if(isSelectedIndex(anchor)) {
removeSelectionInterval(anchor, anchor);
}else{
addSelectionInterval(anchor, anchor);
}
listener.isInCellDragging = true;
}
}else{
super.setSelectionInterval(anchor, lead);
}
}
};
References