
Originariamente inviata da
Jamie04
Mmm mi sembra più complicato di quel che io posso gestire
Magari non ti servirà .... ma ti mostro come si potrebbe fare come intendevo io. E come vedrai sono davvero poche righe!
Basta fare un semplice metodo come questo:
codice:
public static void selectValues(JList jlist, Object[] selectedValues) {
HashSet<Object> set = new HashSet<Object>(Arrays.asList(selectedValues));
ListModel listModel = jlist.getModel();
for (int i = 0; i < listModel.getSize(); i++) {
Object elem = listModel.getElementAt(i);
if (elem != null && set.contains(elem)) {
jlist.addSelectionInterval(i, i);
}
}
}
L'obiettivo del metodo è di cercare nel nuovo contenuto di JList gli elementi che prima erano selezionati, se li trova li seleziona. Se si vuole usare getSelectedValuesList() da Java 7 e parametrizzare anche JList/ListModel, si risparmia pure qualcosina come codice.
Poi nel tuo codice:
codice:
Object[] selectedValues = jlist.getSelectedValues();
// rimozione di tutti gli elementi, caricamento nuovi dati
selectValues(jlist, selectedValues);