View Full Version : [JAVA] JList in JScrollPane, tenere la "view" al fondo
Ho un JList dentro il solito JScrollPane. Con il JList uso il DefaultListModel. In base a certi eventi aggiungo man mano degli elementi al DefaultListModel. Volevo fare in modo che ad ogni aggiunta la "view" del JList venga posizionata al fondo, in modo da far vedere l'ultimo elemento.
Ho fatto così: ho associato al list-model un ListDataListener e nel metodo intervalAdded ho fatto:
public void intervalAdded (ListDataEvent e)
{
JScrollBar scrollBar = scrollPane.getVerticalScrollBar ();
scrollBar.setValue (scrollBar.getMaximum ());
}Funziona ... "quasi", nel senso che sta sì al fondo ma l'ultimo elemento visibile è il penultimo, non l'ultimo.
Dove sbaglio? Grazie.
Oceans11
19-12-2006, 15:35
[edit] non so se con la scrollbar funziona lo stesso...sempre dalla documentazione:
JList doesn't implement scrolling directly. To create a list that scrolls, make it the viewport view of a JScrollPane. For example:
JScrollPane scrollPane = new JScrollPane(myList);
// Or in two steps:
JScrollPane scrollPane = new JScrollPane();
scrollPane.getViewport().setView(myList);
ciao!
________________________________________________________
Nella documentazione ho ritrovato il metodo che ho usato un paio di volte per fare quello che dici tu.
il metodo si chiama ensureIndexIsVisible(int index), è della classe JList e (traduco barbaramente dall'inglese... :D ) serve a scrollare fino a che la riga specificata dall'indice sia visibile!
Funziona (ovviamente) se la JList è in un Container che supporta lo scrolling(come scrollpane)
[JAVA DOCS]For this method to work, the JList must be within a JViewport.[/JAVA DOCS]
spero ti sia di aiuto.
[edit] non so se con la scrollbar funziona lo stesso...sempre dalla documentazione:
JList doesn't implement scrolling directly. To create a list that scrolls, make it the viewport view of a JScrollPane. For example:Ehm ... e io ho fatto proprio così! ("Ho un JList dentro il solito JScrollPane")
Nella documentazione ho ritrovato il metodo che ho usato un paio di volte per fare quello che dici tu.
il metodo si chiama ensureIndexIsVisible(int index),Cavoli ... eccolo! Non me lo ricordavo ... chissà perché nella documentazione cercavo un setQualcosa .... che facesse quello (e che ovviamente non c'è) :muro:
Grazie. ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.