PDA

View Full Version : [JAVA] JComboBox fa il clear di tutti gli altri campi


carve81
18-03-2011, 19:42
Ciao

Premetto che sono un newbie su Java e mi dilettando nella programmazione di un programmino.
Ho un problema che ho capito perchè accade ma non riesco a trovare il modo di risolvere.
Mi spiego meglio:
Ho un JButton "padre" che come azione mi apre due JPanel uno contenente 1 Form (per l'immissione dei dati personali) e l'altro contenente altri JButton che eseguono azioni sul DB (salva, query etc).
In questo form ho 3 JComboBox che permettono di selezionare dati da una lista gia esistente. Tutto sembra ok tranne il fatto che quando faccio un'azione sulla JComboBox (es selezione di oggetto dalla lista) l'intero form si ripulisce e la stessa JComboBox torna con il valore di default.
Questo succede perchè all'inizio dell'azione del pulsante "padre" c'è la funzione p6.removeAll(); che in pratica "ripulisce" il JPanel figlio.
Questa funzione l'avevo messa perchè senza di essa all'azione di scelta della JComboBox per qualche ragione l'intero form perde la formattazione che con tanta pazienza avevo fatto (tramite GridBagLayout).


Ecco l'estratto dell'action del JButton:
gestioneBTN.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

p2.removeAll();
p5.removeAll();
p6.removeAll();

....
definizione del form
....
//Definizione combobox
JLabel corso1L = new JLabel("Corso 1");
Vector corsiVEC1 = new Vector();
corsiVEC1 = elenco_corsi ();
int conteggio = corsiVEC1.size();
final JComboBox corso1TF = new JComboBox(corsiVEC1);
corso1TF.addActionListener(this);
...
//definizione del layout
GridBagLayout layoutTabDati = new GridBagLayout();
p6.setLayout(layoutTabDati);
GridBagConstraints caratteristicheLayout = new GridBagConstraints();
....
p2.add(p6);
p1.validate();
p2.validate();
p5.validate();
p6.validate();
repaint();

PGI-Bis
19-03-2011, 12:51
Ad occhio direi che il problema sia questa linea:

corso1TF.addActionListener(this);

La combox box corso1tf spara un action event quando la selezione cambia. Il gestore degli eventi (this) cancella tutto e ricrea l'interfaccia, da cui la sparizione.

carve81
20-03-2011, 13:26
Grazie!!!
Avevi visto bene!!!

Togliendo quella stringa funziona!