# JList Mehrfachauswahl ohne Drücken der Strg-Taste



## tosca (19. Nov 2007)

Hallo,

hat jmd. von Euch ne Idee, wie ich einer JList beibringe, die Mehrfachauswahl ohne das Drücken der Strg-Taste zu ermöglichen? D. h. ich will die Elemente nur per Mouse-Click an- und abwählen ohne eine Taste dabei drücken zu müssen. Das Element soll so lange angewählt bleiben, bis es per Mouse-Click abgewählt wird.


----------



## seejay (19. Nov 2007)

keine ahnung ob es soetwas gibt, mir würde nur ein workaround einfallen. Merken welche elemente markiert sind und wenn dann eins makiert wird, vergleichen ob es schon in der liste steht, wenn nein hinzufügen und alle elemente deiner gemerken liste durch selectIndizes anwählen, wenn es drin steht raus löschen und die anderen markieren


----------



## tosca (20. Nov 2007)

Ja, das ist ne Möglichkeit. Danke schon mal! Leider nen bißchen umständlich - hat noch jmd. ne andere Idee?


----------



## tosca (20. Nov 2007)

Also das mit dem Merken und Hinzufügen bzw. Löschen sieht bei mir jetzt so aus - funktioniert wunderbar:

```
class ToggleSelectionModel extends DefaultListSelectionModel
    {
        /** Automatically generated serialVersionUID. */
        private static final long serialVersionUID = 7628229551673258208L;
        
        boolean gestureStarted = false;
       
        public void setSelectionInterval(int index0, int index1) {
            if(getSelectionMode()==SINGLE_SELECTION)
            {
                super.setSelectionInterval(index0, index1);
            } else
            {
                if (isSelectedIndex(index0) && !gestureStarted) {
                    super.removeSelectionInterval(index0, index1);
                }
                else {
                    super.addSelectionInterval(index0, index1);
                }
                gestureStarted = true;
            }
        }

        public void setValueIsAdjusting(boolean isAdjusting) {
            if (isAdjusting == false) {
                gestureStarted = false;
            }
        }
    }
```

Aufruf:

```
JList list = new JList();
list.setSelectionModel(new ToggleSelectionModel());
```

Vielleicht hilft das ja noch jemand anderem weiter


----------

