Primo metodo: implementare toString()
sulla classe Employee, e farlo tornare il nome. Rendi il tuo modello di casella combinata contenente le istanze di Dipendente. Quando si ottiene l'oggetto selezionato dalla combo, si otterrà un'istanza Employee, e si può quindi ottenere il suo ID.
Secondo metodo: se toString()
restituisce qualcosa di diverso dal nome (informazioni di debug, ad esempio), fare lo stesso come sopra, ma in aggiunta impostare un renderer di celle personalizzato alla propria combo. Questo renderer di celle dovrà trasmettere il valore a Employee e impostare il testo dell'etichetta sul nome del dipendente.
public class EmployeeRenderer extends DefaulListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
setText(((Employee) value).getName());
return this;
}
}
fonte
2012-04-30 17:39:10
Penso che sia meglio usare un renderer piuttosto che cambiare un ' String() 'per adattarsi alla GUI. –