Ciao, grazie mille per tutto il supporto che mi stai dando, diciamo che il Threading di swing non mi è chiarissimo, perchè non è da molto che mi approccio ad esso (
) , in generale ho sempre usato thread per fare calcoli ma mai per mostrare cose su gui...
Allora ti posto pari pari quello che sto cercando di fare:
1- Questo è il codice che eseguo per richiamare la mia finestra con la combobox ed altra roba ( è un jframe per comodità di test ), questo codice viene eseguito quando premo su un bottone ( Avvia visualizzazione )
codice:
TEST a=new TEST();
a.setVisible(true);
2- A questo punto, siccome io voglio che al caricamento di "a" , la combobox venga popolata, richiamo il thread con l'azione " formComponentShown " e nel corpo di questo evento metto:
codice:
CaricaComuniThreads caricaComuni;
try {
caricaComuni = new CaricaComuniThreads(jComboBox1, Main.getConnessioneDB());
Thread t = new Thread(caricaComuni);
t.start();
} catch (SQLException ex) {
Logger.getLogger(TEST.class.getName()).log(Level.SEVERE, null, ex);
}
3- La classe caricaComuni è così fatta( solo il metodo run () per ovvi motivi di spazio ):
codice:
@Override
public void run() {
for (int i = 0; i < nomiComuni.size(); i++) {
final String elem=nomiComuni.get(i);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
comboBoxComuni.addItem(elem);
}
});
}
}
Quando eseguo questo "casotto" la gui si blocca sempre, per ritornare funzionante solo dopo aver completato il caricamento di tutti i comuni. Cosa sbaglio? Non dovrei far eseguire il codice nell'evento " formComponentShown "??
Grazie mille per tutto il supporto che mi stai dando.