
Originariamente inviata da
andbin
Per aggiornare un JList innanzitutto è necessario che la implementazione del ListModel sia "mutabile", ovvero offra metodi es. add, insert, ecc.... che permettano di cambiarne il contenuto. E questi metodi devono correttamente aggiornare la struttura dati interna al model e poi notificare la "view" (in generale qualunque ListDataListener registrato) delle modifiche. Tutto qui.
Si può anche aggiornare un JList andando a sostituire il ListModel con un altro ma è decisamente più "radicale".
P.S.
codice:
menuList.setModel(new javax.swing.AbstractListModel() {
public int getSize() { return menuVoices.size(); }
public Object getElementAt(int i) { return menuVoices.get(i); }
});
Questa implementazione di ListModel non è "mutabile" nel senso che ho detto poco fa. Se anche tenessi il riferimento menuVoices e facessi degli add, non avresti il risultato voluto .... il list model non "sa" che hai aggiunto dati dall'esterno.