View Full Version : [JAVA] Problema con JList
elly1985
31-08-2007, 01:39
Ciao a tutti!
Ho un problema con una JList...!
Ho un pannello PannelloLista che ha due costruttori: uno accetta come parametro un pannello PanSocieta, l'altro un pannello PanDitta. Entrambi i costruttori creano una JList con i nomi dei clienti che inserisco nel programma.
Io vorrei che cliccando sul nome di un cliente della JList si aprisse una finestra con i dati del cliente stesso!Naturalmente se il cliente cliccato è stato creato da PanSocieta vorrei che si aprisse una finestra con un pannello uguale a PanSocieta; se invece il cliente cliccato è stato creato da PanDittavorrei che si aprisse una finestra con un pannello uguale a quello di PanDitta.
PROBLEMA: Mi si aprono 2 finestre identiche con i dati del cliente ogni volta che clicco su un nome!! E mi si aprono sempre finestre con un pannello identico a PanDitta anche se il cliente cliccato era stato creato da PanSocieta (PanDitta ha un dato in più di PanSocieta)!!!
Qualcuno può darmi una mano?
E' tutto il giorno che ci studio, ma non ho risolto niente!!
Oltretutto tra pochi giorni ho l'esame!!!!
Se potete aiutarmi ve ne sono infinitamente grata!
GRAZIE MILLE!
Ciao a tutti!
Ho un problema con una JList...!
Ho un pannello PannelloLista che ha due costruttori: uno accetta come parametro un pannello PanSocieta, l'altro un pannello PanDitta. Entrambi i costruttori creano una JList con i nomi dei clienti che inserisco nel programma.
Io vorrei che cliccando sul nome di un cliente della JList si aprisse una finestra con i dati del cliente stesso!Naturalmente se il cliente cliccato è stato creato da PanSocieta vorrei che si aprisse una finestra con un pannello uguale a PanSocieta; se invece il cliente cliccato è stato creato da PanDittavorrei che si aprisse una finestra con un pannello uguale a quello di PanDitta.
PROBLEMA: Mi si aprono 2 finestre identiche con i dati del cliente ogni volta che clicco su un nome!! E mi si aprono sempre finestre con un pannello identico a PanDitta anche se il cliente cliccato era stato creato da PanSocieta (PanDitta ha un dato in più di PanSocieta)!!!
Qualcuno può darmi una mano?
E' tutto il giorno che ci studio, ma non ho risolto niente!!
Oltretutto tra pochi giorni ho l'esame!!!!
Se potete aiutarmi ve ne sono infinitamente grata!
GRAZIE MILLE!
un po di codice ?
Immagino che la JList avrà un ascoltatore di eventi (diciamo un MouseListener). Dentro a questo ascoltatore ci sarà una cosa tipo:
...blabla
Cliente cliente = listModel...blabla
A questo punto devi distinguere in qualche modo il fatto che Cliente sia stato creato con PanDitta piuttosto che con PanSocietà. Se mi dici che PanDitta ha un campo in più significa come minimo che un cliente creato con PanDitta ha un dato in più rispetto a quello creato con PanSocietà. Insomma, c'è qualcosa che rende diversi i due clienti. Non devi far altro che dire:
se cliente ha le caratteristiche di un cliente Ditta
-> apri un PanDitta con i dati di questo cliente
se cliente ha le caratteristiche di un cliente Società
-> apri un PanSocietà con i dati di questo cliente
E' un po ovvio ma forse è questo il problema.
elly1985
31-08-2007, 13:01
Intanto grazie per l'interessamento...!
Ecco il codice...!
GRAZIE MILLE DI NUOVO!
:)
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);
}
}
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.