2010-04-23 13 views
5

Ho un JList annidato all'interno di un JScrollPane. Quando aggiungo elementi a JList, voglio che JScrollPane scorra automaticamente fino alla fine di JList in modo che l'ultimo elemento sia visibile. Per fare questo, ho il seguente codice:Impossibile scorrere l'ultimo elemento in JList

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

Quando provo usi questo codice, tuttavia, il JScrollPane solo scorre fino al penultimo punto, lasciando l'ultima voce fuori dal campo visivo. Questo non è in alcun modo desiderabile. Ho provato ad aggiungere valori a getMaximum(), ma il problema persiste.

Come posso far scorrere JScrollPane fino in fondo?

risposta

14

provare a utilizzare il metodo di JList#ensureIndexIsVisible():

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

L'ho appena scoperto e funziona perfettamente. –

+2

Bello. Btw. cosa da ricordare (perché forzare lo scroll è legato alla modifica del contenuto) http://stackoverflow.com/a/7114267/210342 – greenoldman

+0

Questo funziona! Grazie. – Horizon

0

Anche se questa risposta non ha funzionato per me, ho trovato questo: http://forums.sun.com/thread.jspa?threadID=623669 (post scritto da 'inopia') che funziona perfettamente.

Come dice: "Il problema qui è che può diventare un po 'difficile trovare un evento che si attiva dopo che sia ListModel, JList e JScrollPane siano stati aggiornati."

Problemi correlati