Ho modificato così il codice:
codice:
public class PannelloLista extends JPanel implements ActionListener, ListSelectionListener {
private JTextField txt1;
private JList lista, lista2;
private JButton b;
private JLabel txt2;
private PanSocieta riferimento;
private PanDitta riferimento2;
private FinestraLista RIFERIMENTO;
private ClienteDittaIndividuale c, c2;
private FinestraDatiCliente RIFE;
private FinestraDatiCliente2 RIFE2;
/** Metodo costruttore se chiamante è PanSocieta. */
public PannelloLista(PanSocieta chiamante, FinestraLista CHIAMANTE) {
super();
setBackground(new Color(102,255,102));
RIFERIMENTO = CHIAMANTE;
riferimento = chiamante;
txt1 = new JTextField("Lista dei clienti inseriti");
txt1.setEditable(false);
txt2 = new JLabel("Premere OK per chiudere la finestra");
int lunghezza = riferimento.CLIENTI.length();
String[] clienti = new String[lunghezza];
clienti = riferimento.gc.getNomiClienti(riferimento.CLIENTI);
lista = new JList(clienti);
lista.addListSelectionListener(this);
b = new JButton(" OK ");
b.addActionListener(this);
add(txt1);
add(lista);
add(txt2);
add(b);
}
/** Metodo costruttore se chiamente è PanDitta. */
public PannelloLista(PanDitta chiamante, FinestraLista CHIAMANTE) {
super();
setBackground(new Color(102,255,102));
RIFERIMENTO = CHIAMANTE;
riferimento2 = chiamante;
txt1 = new JTextField("Lista dei clienti inseriti");
txt1.setEditable(false);
txt2 = new JLabel("Premere OK per chiudere la finestra");
int lunghezza = riferimento2.CLIENTI.length();
String[] clienti = new String[lunghezza];
clienti = riferimento2.gc.getNomiClienti(riferimento2.CLIENTI);
lista2 = new JList(clienti);
b = new JButton(" OK ");
b.addActionListener(this);
lista2.addListSelectionListener(this);
add(txt1);
add(lista2);
add(txt2);
add(b);
}
/** Metodo per gestire eventi JButton. */
public void actionPerformed(ActionEvent e) {
/** Nascondo FinestraLista. */
RIFERIMENTO.setVisible(false);
}
/** Metodo per gestire eventi JList. */
public void valueChanged(ListSelectionEvent e) {
if(e.getSource()==lista2) {
String NOME = (String)lista2.getSelectedValue();
c = new ClienteDittaIndividuale(NOME);
c2 = riferimento2.gc.cercaCliente(riferimento2.CLIENTI, this.c);
FinestraDatiCliente fin = new FinestraDatiCliente("Dati cliente");
Container cont = fin.getContentPane();
RIFE = fin;
PannelloDatiCliente pan = new PannelloDatiCliente(this.c2, riferimento2.CLIENTI, this.RIFE);
cont.add(pan);
fin.setVisible(true);
}
else {
String NOME = (String)lista.getSelectedValue();
c = new ClienteDittaIndividuale(NOME);
c2 = riferimento.gc.cercaCliente(riferimento.CLIENTI, this.c);
FinestraDatiCliente2 fin2 = new FinestraDatiCliente2("Dati cliente");
Container cont = fin2.getContentPane();
RIFE2 = fin2;
PannelloDatiCliente2 pan2 = new PannelloDatiCliente2(this.c2, riferimento.CLIENTI, this.RIFE2);
cont.add(pan2);
fin2.setVisible(true);
}
}
}
1° PROBLEMA: ogni volta che apro FinestraDatiCliente oppure FinestraDatiCliente2 me ne apre due uguali, invece di una!!!
2° PROBLEMA: se nella JList ho un cliente che mi arriva da PanSocieta(lista) e un altro che mi arriva da PanDitta(lista2), anche quando l'evento è generato da lista mi apre FinestradatiCliente per tutti e due i clienti!!
PERCHE'????
AIUUUUUUTOOO!!!!
GRAZIE MILLE!