Servus,
ich habe ein Problem mit einem SelectionListener auf einer JList. Sobald sich die Selektion in der Liste ändert, bzw. wenn zum ersten Mal halt was angewählt wurde, soll verschiedene Buttons aktiviert werden.
Leider klappt das noch nicht wie gewünscht. Ich kann auswählen was ich will, der SelectionListener reagiert einfach nicht. Fehlermeldung/Exception kommt keine.
...
//ListModel wird mit Werten (String) gefüllt
fill(aktivListModel,true);
//neue Liste mit Model erstellen
aktivList = new JList(aktivListModel);
aktivList.setSelectionMode(ListSelectionModel.SINGLE\_SELECTION);
aktivList.addListSelectionListener(listen);
...
„listen“ ist eine Instanz einer Klasse, die die GUI-Ereignisse abarbeitet. Wie gesagt ansonsten klappt alles, nur nicht bei der Liste:
ich habe ein Problem mit einem SelectionListener auf einer
JList. Sobald sich die Selektion in der Liste ändert, bzw.
wenn zum ersten Mal halt was angewählt wurde, soll
verschiedene Buttons aktiviert werden.
klar.
…
//ListModel wird mit Werten (String) gefüllt
fill(aktivListModel,true);
//neue Liste mit Model erstellen
aktivList = new JList(aktivListModel);
aktivList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Dann kann man auch auf etwas komplexere Selections listen und brauch an sich das setSelectionMode() nicht mehr.
Das ist falsch:
if (aktivList.getSelectedIndex() == -1) {
Erst NACHDEM alle Listener abgearbeitet wurden wird in der Liste auch tatsächlich der Index als Selected markiert. Man muss also auf die Methoden int getFirstIndex() und int getLastIndex() aus dem Event arbeiten.
Problem behoben und schon das nächste
Hy,
das erste Problem habe ich nun in den Griff bekomen und nun stehe ich vor dem nächsten.
Ich habe 2 verschiedene Listen und möchte dementsprechend die dazugehörigen Buttons (de)aktivieren. Wie komme ich jetzt aber an die Namen der Liste heran, in der eine Selektion getätigt wurde.
Bei Buttons o.a. kann ich ja einfach über
...
if(event.getSource() == buttonSoUndSo)...
den gedrückten Button abfragen. Wie geht das bei einer JList funkt
...
if(event.getSource() == list1)...
irgendwie nicht.
Und alle Beispiele und Codes die ich bis jetzt ergoogelt haben, behandeln immer nur eine JList.
public void valueChanged(ListSelectionEvent e) {
mainWin.showMessage("Event: "+e.toString());
…
Aber nicht einmal da wird was ausgegeben, was mich darauf
schließen läßt, dass das Event gar nicht ausgelöst wird. Also
langsam weiss ich nicht mehr…
Wenn nicht mal der Text „Event:“ ausgegeben wird, dann kommt es nicht zum auswerten des Event in dieser Methode! Ergo: Der Listener ist nicht korrekt angemeldet. Dort muss du die Suche ansetzen.