Sto cercando di cambiare un JList all'interno di un JScrollPane in modo dinamico, utilizzandoFai JScrollPane barre di scorrimento di visualizzazione quando JList interno è cambiato
myList.setListData(someArray);
Dopo questo mi aspetterei il JScrollPane per mostrare barre di scorrimento, se necessario, ma questo doesn' t succedere Googling il problema non è stato molto utile. Ho provato varie combinazioni dei seguenti metodi, con scarso successo (in pratica frugando attraverso la documentazione API):
myScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
myList.validate(); myScrollPane.validate();
myScrollPane.setPreferredSize(Dimension someDimension);
myScrollPane.setViewportView(moduleList);
myScrollPane.setLayout(...);
Quando si utilizza il primo metodo appare una barra di scorrimento, ma non viene attivato dal cambio di modello. Mi sono anche collegato a PropertyChangeEvent e ho convalidato che JList si attiva e si verifica quando il modello è cambiato. Cosa mi manca qui? Che metodo devo usare per fare questo lavoro, o meglio ancora quale proprietà renderebbe questo lavoro fuori dalla scatola?
Non sicuro che ciò possa essere d'aiuto, ma assicurarsi che la chiamata a setListData (...) si verifichi sul thread di eventi. Ogni sorta di cose brutte può accadere se si muta un oggetto UI su un thread diverso. Inoltre, hai guardato JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED? Non è esattamente chiaro cosa intendi per "attivato dal cambio di modello". –