Hallo,
ich möchte mit einer JList bei Änderungen im Model stets auf die letzte
Zeile positionieren.
Das ganze versuche ich mit
int size = list.getModel().getSize();
if (size > 2)
list.ensureIndexIsVisible(size - 1);
Da ich das Model kenne, habe ich es zunächst mit einem
ListDataEventListener versucht.
Leider gab es da wohl ein Aktualisierungsproblem. Manchmal kannte die
Liste die letzte Zeile noch nicht und hat dann mit wüsten Beschimpfungen
reagiert.
Ich habe dann noch mal versucht, das ganze asynchron über einen Thread
zu aktualisieren, bekomme dann auch keine Fehlermeldung, aber die Liste
ist nach dem Aufruf manchmal leer. Vermutlich aus demselben Grund.
Wie kann man es besser/richtiger machen?
Dirk
Moin
ich möchte mit einer JList bei Änderungen im Model stets auf
die letzte
Zeile positionieren.
Das ganze versuche ich mit
int size = list.getModel().getSize();
if (size > 2)
list.ensureIndexIsVisible(size - 1);
Da ich das Model kenne, habe ich es zunächst mit einem
ListDataEventListener versucht.
(…)
Wie kann man es besser/richtiger machen?
Ich nehm an du benutzt das Interface ListModel ?
in dem Fall muss du den Listener der über void
addListDataListener(ListDataListener l) registiert wurde vor deinem
int size = list.getModel().getSize();
if (size > 2)
list.ensureIndexIsVisible(size - 1);
durchlaufen lassen mit intervalAdded(…).
Das kann man über ein Semaphore machen, oder beide Operationen in einen Thread hauen.
Wenn du kein ListModel benutz poste mal wie du die Liste erstellst.
cu
Servus,
Ich nehm an du benutzt das Interface ListModel ?
Ja.
in dem Fall muss du den Listener der über void
addListDataListener(ListDataListener l) registiert wurde vor
deinem
int size = list.getModel().getSize();
if (size > 2)
list.ensureIndexIsVisible(size - 1);
durchlaufen lassen mit intervalAdded(…).
Das kann man über ein Semaphore machen, oder beide Operationen
in einen Thread hauen.
Oder aber man benutzt SwingUtitlities.invokeLater(Runnable).
Trotzdem danke für die Antwort.
Dirk