2010-04-23 5 views
5

Ich habe eine JList innerhalb einer JScrollPane geschachtelt. Wenn ich Elemente zur JList hinzufüge, möchte ich, dass JScrollPane automatisch zum Ende der JList scrollt, so dass das letzte Element sichtbar ist. Um dies zu tun, ich habe den folgenden Code:Kann nicht programmatisch zum letzten Element in JList scrollen

getWordListScroller().getVerticalScrollBar().getModel().setValue(getWordListScroller().getVerticalScrollBar().getModel().getMaximum()); 

Wenn ich diesen Code Versuchen Sie es mit, aber die JScrollPane nur blättert zum vorletzten Punkt, so dass das letzte Element aus der Sicht. Dies ist in keiner Weise wünschenswert. Ich habe versucht, Werte zu getMaximum() hinzuzufügen, aber das Problem bleibt bestehen.

Wie kann ich den JScrollPane zum Scrollen nach ganz unten bekommen?

Antwort

14

Versuchen Sie, die JList#ensureIndexIsVisible() Methode:

JList wordList = getWordListScroller(); 
int lastIndex = wordList.getModel().getSize() - 1; 
if (lastIndex >= 0) { 
    wordList.ensureIndexIsVisible(lastIndex); 
} 
+0

Ich habe gerade gefunden, dass ich selbst und es funktioniert wunderbar. –

+2

Schön. Übrigens. etwas, an das man sich erinnern sollte (weil das Erzwingen von Scroll sich auf den Inhalt bezieht) http://stackoverflow.com/a/7114267/210342 – greenoldman

+0

Das funktioniert! Vielen Dank. – Horizon

0

Während diese Antwort für mich funktionierte nicht, ich dies gefunden: http://forums.sun.com/thread.jspa?threadID=623669 (post geschrieben von 'inopia') die einwandfrei funktioniert.

Wie er sagt: "Das Problem hier ist, dass es ein wenig schwierig werden kann, ein Ereignis zu finden, das ausgelöst wird, nachdem sowohl ListModel, JList und JScrollPane aktualisiert wurden."

Verwandte Themen