Originariamente inviato da FilippoCSM
La classe l'ho fatta,
class {String id;String Nome}
E che è 'sta roba??
Tutto qui? Costruttore/i? Metodi getter/setter? toString()?? niente...nada???
Originariamente inviato da FilippoCSM
E poi faccio
MyJcbox.additem(myclass.Nome);
o no?
No.
Originariamente inviato da FilippoCSM
E l'Id dove lo metto?
È nel tuo oggetto, no?
Originariamente inviato da FilippoCSM
O devo fare una stringa concatenata con id e nome?
No.
Originariamente inviato da FilippoCSM
E poi come lo tiro fuori l'id?
Sempre dal tuo oggetto, no?
Originariamente inviato da FilippoCSM
se ordine alfabeticamente il Jcombobox non è in ordine di record...
Il model di default (che è DefaultComboBoxModel) è "mutabile" (puoi aggiungere/rimuovere elementi) ed è semplicemente una sequenza di elementi ordinata per indice 0,1,2.... (non per contenuto).
Se passi e aggiungi al model dei dati già ordinati secondo il criterio che vuoi, è un conto. Se vuoi che sia il model a mantenere ordinati gli elementi (es. tu inserisci "topolino" poi dopo "pippo" ma vuoi che si dispongano come "pippo" e dopo "topolino") è un altro conto e devi implementare tu un "tuo" model.
codice:
public class MioElemento {
private int id;
private String nome;
public MioElemento(int id, String nome) {
this.id = id;
this.nome = nome;
}
public int getId() { return id; }
public String getNome() { return nome; }
// se vuoi, anche i metodi "setter" ma per questo esempio non li ho messi
public String toString() {
return nome;
}
}
Poi ad esempio:
codice:
JComboBox comboBox = new JComboBox();
comboBox.addItem(new MioElemento(123, "pippo"));
comboBox.addItem(new MioElemento(456, "topolino"));
Ciò che verrà visualizzata è per default la stringa fornita dal toString() degli oggetti, quindi nel caso sopra solo il nome.
Chiaramente puoi in ogni momento ottenere l'elemento i-esimo o quello selezionato ad esempio con getItemAt() o getSelectedItem(). Questi metodi ritornano come tipo un Object ma tu sai che gli oggetti nel model sono davvero della tua classe MioElemento, quindi ad esempio:
codice:
MioElemento elem = (MioElemento) comboBox.getSelectedItem();
System.out.println(elem.getId());
System.out.println(elem.getNome());
Più chiaro ora?? (spero ....)