PDA

View Full Version : Java e JComboBox..HELP


mercurio76
18-10-2003, 10:27
Sto cercando di riempire la lista di elementi di una JComboBox ma ho un problema.

Dunque, gli elementi non sono semplici stringhe ma oggetti composti da due campi e tre metodi: una stringa e un intero, i metod setItem, getItemKey e toString. Io vorrei inserire questi oggetti semplicemente facendo "nomeCombo.insertItemAt(item,posizione)" e che il risultato fosse la visualizzazione del solo campo String. Per fare questo ho quindi creato un metodo toString che mi restituisce il campo String dell'oggetto.

In questo modo inserisco gli oggetti e viene correttamente visualizzato nella lista solo il campo String ma se seleziono poi un oggetto dalla lista posso recuperare anche il campo intero.

Il problema è questo..sembra funzionare tutto a dovere ma quando avviene l'inserimento (con un ciclo while) nella lista dalla JCombo compare solo l'ultimo oggetto inserito ma in tutte le posizioni..lo stralcio del codice è questo:


int i=0;
while (result.next()){
....
....
item.setItem(stringa,key);
comboDatiLocalita.insertItemAt(item,i++)
}


Qualcuno mi sa aiutare?

PGI
18-10-2003, 13:33
Il ciclo è corretto, così come l'uso del metodo insertItemAt.

Probabilmente stai inserendo n volte lo stesso oggetto "item" reimpostando ad ogni passaggio uno dei suoi campi, in modo tale che al termine del ciclo l'oggetto item iserito n volte presenta come valore restituito da toString l'ultimo impostato. Per fare un esempio, il seguente codice

Item item=new Item();
int i=0;
while(i<100) {
item.setText("testo"+String.valueOf(i));
comboBox.insertItemAt(item, i++);
}

darebbe come risultato una comboBox che contiene 100 volte lo stesso oggetto "Item" il cui valore ipotetico "text" è "testo99".

Creando invece un'istanza di Item all'interno del ciclo otterresti 100 diversi oggetti Item:

int i=0;
while(i<100) {
Item item=new Item();
item.setText("testo"+String.valueOf(i));
comboBox.insertItemAt(item, i++);
}


IL problema che riscontri dovrebbe essere causato da una situazione analoga al codice 1, dico dovrebbe perchè senza il codice completo del ciclo "while" devo tirare un po' nel mucchio :D.

&Ciao.

mercurio76
18-10-2003, 14:08
Grazie mille...adesso funge...anche se avrei pensato che dovesse funzionare lo stesso:rolleyes:
Avevo inserito un println prima di "insertItemAt" a stmpava le stringhe giuste, quindi pensavo che l'errore non fosse li.

Cmq grazie ancora...ci avrei perso di sicuro molto tempo ;)

Ciao e alla prossima