| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  19-11-2014, 11:49 | #1 | 
| Member Iscritto dal: Apr 2008 
					Messaggi: 60
				 | 
				
				[JAVA] combobox con 2 valori
			 
		ciao a tutti. rieccomi con un nuovo problema. Volevo chiedervi se è possibile caricare nella JComboBox 2 valori di cui solo 1 visibile in lista. Mi spiego meglio: ho delle coppie di valori (ID e Descrizione). voglio visualizzare nella combo la Descrizione, ma utilizzare l'ID una volta selezionato il valore della combo. in VB6 basta scrivere Codice: Combo1.AddItem RecordSet("Descrizione")
Combo1.ItemData(Combo1.NewIndex) = RecordSet("ID")
e in lettura
.... = Combo1.List(Combo1.ListIndex) 'ho la descrizione
...= Combo1.ItemData(Combo1.ListIndex) 'ho la chiave unicaIn alternativa come posso fare? pensavo di caricare un array a 2 dimesioni, tipo: Codice: String[][] mod = {{"1","tipo1"},{"2","tipo2"},{"2","tipo3"}};
DefaultComboBoxModel cmbModel=new DefaultComboBoxModel();
cmbModel.addElement(mod[0][1]);
cmbModel.addElement(mod[1][1]);
cmbModel.addElement(mod[2][1]); //cosi carico la stringa "tipo3" ma mi rimane fuori l'ID
// cmbModel.addElement(mod[0]); //cosi carico il reference visualizzando String@123456
cmbTest.setModel(cmbModel);grazie, tagan | 
|   |   | 
|  19-11-2014, 14:45 | #2 | 
| Senior Member Iscritto dal: Nov 2005 Città: Texas 
					Messaggi: 1722
				 | 
		Crei una classe che contenga i tuoi valori (anche unnamed). La toString() di quella classe riporta il valore che vuoi visualizzare 
				__________________ In God we trust; all others bring data | 
|   |   | 
|  19-11-2014, 15:27 | #3 | |
| Member Iscritto dal: Apr 2008 
					Messaggi: 60
				 | Quote: 
 intendi una cosa del genere? Codice: class MioDato{
    public int ID;
    public String Descrizione;
        
    public String toString(){
        return ID+"-"+Descrizione;
    }
}Codice: MioDato md = new MioDato(); md.ID=1; md.Descrizione="Testo1"; cb.addItem(md); md = new MioDato(); md.ID=2; md.Descrizione="Testo2"; cb.addItem(md); md = new MioDato(); md.ID=3; md.Descrizione="Testo3"; cb.addItem(md); 1-testo1 2-testo2 3-testo3. invece io voglio solo visualizzare il testo, ma alla selezione, mi deve restituire l'ID associato al testo. | |
|   |   | 
|  19-11-2014, 15:35 | #4 | |
| Senior Member Iscritto dal: Nov 2005 Città: Texas 
					Messaggi: 1722
				 | Quote: 
 Codice: @Override
public String toString()
{
    return descrizione;
}Alla selezione, ti fai dare l'indice con getSelectedIndex(); visto che poi hai il modello (lo puoi ottenere con Codice: DefaultComboBoxModel model = (DefaultComboBoxModel)cmd.getModel(); 
				__________________ In God we trust; all others bring data | |
|   |   | 
|  19-11-2014, 15:54 | #5 | |
| Member Iscritto dal: Apr 2008 
					Messaggi: 60
				 | Quote: 
 il codice per prelevare il valore dalla combo è questo: Codice: DefaultComboBoxModel model = (DefaultComboBoxModel)cb.getModel(); MioDato md = (MioDato)model.getSelectedItem(); | |
|   |   | 
|  19-11-2014, 16:03 | #6 | |
| Senior Member Iscritto dal: Nov 2005 Città: Texas 
					Messaggi: 1722
				 | Quote: 
  Puoi prelevare il valore direttamente con getSelectedItem() 
				__________________ In God we trust; all others bring data | |
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 17:13.









 
		 
		 
		 
		







 
  
 



 
                        
                        










