Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225

    [java] Classe con 2 costruttori

    Ciao a tutti!
    Se ho una classe con due costruttori, esiste un modo per distinguerli?
    Magari con un if?
    GRAZIE MILLE!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] Classe con 2 costruttori

    Originariamente inviato da ELY85
    Se ho una classe con due costruttori, esiste un modo per distinguerli?
    Magari con un if?
    Distinguerli in che senso!!?? Quando crei una istanza della classe, in base ai parametri passati verrà chiamato l'uno o l'altro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Si, ok!
    Ma c'è un modo per sapere quale dei due è stato chiamato?
    Per poi dirlo ad un ascoltatore di eventi....!
    GRAZIE!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ELY85
    Ma c'è un modo per sapere quale dei due è stato chiamato?
    Di per sé no. Ma potresti impostare una variabile di istanza o fare cose diverse nei due costruttori.

    Quando si chiedono cose del genere però .... mi puzza un pochino....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Sto sempre cercando di risolvere il problema con la JList....!!!
    Per questo faccio questa domanda!

    Cosa intenti per "impostare una variabile d'istanza"?
    GRAZIE ANCORA!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ELY85
    Cosa intenti per "impostare una variabile d'istanza"?
    Mettere una variabile di istanza (private chiaramente) ad un valore 1 o 2 (o anche usando una enum) o quello che vuoi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Ok...ma dopo nel metodo valueChange() come la richiamo?
    GRAZIE ANCORA!

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Niente niente!!!
    Domanda sciocca!
    CIAO E GRAZIE!

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    codice:
    public class PannelloLista extends JPanel implements ActionListener, ListSelectionListener {
        private JTextField txt1;
        private JList lista;
        private JButton b;
        private JLabel txt2;
        private PanSocieta riferimento;
        private PanDitta riferimento2;
        private FinestraLista RIFERIMENTO;
        private int chiamato;
        
        private ClienteDittaIndividuale c, c2;
        private FinestraDitta RIFE2;
        private FinestraSocieta RIFE;
        
    
        /** Metodo costruttore se chiamante è PanSocieta. */
        public PannelloLista(PanSocieta chiamante, FinestraLista CHIAMANTE) {
            super();
            
            setBackground(new Color(102,255,102));
            
            RIFERIMENTO = CHIAMANTE;
            riferimento = chiamante;
            chiamato = 1;
            
            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;
            chiamato = 2;
            
            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);
            lista = new JList(clienti);
            lista.addListSelectionListener(this);
            
            b = new JButton("  OK  ");
            b.addActionListener(this);
            
            add(txt1);
            add(lista);
            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 el) {
            
            if (chiamato == 2) {
                String NOME = (String) lista.getSelectedValue();
                c = new ClienteDittaIndividuale(NOME);
                c2 = riferimento2.gc.cercaCliente(riferimento2.CLIENTI, this.c);
                
                FinestraDitta fd = new FinestraDitta("Dati cliente:");
                Container cont = fd.getContentPane();
                RIFE2 = fd;
                PannelloDatiDitta pd = new PannelloDatiDitta(this.c2, riferimento2.CLIENTI, this.RIFE2);
                cont.add(pd);
                fd.setVisible(true);
            }
            
            if (chiamato == 1) {
                String NOME = (String) lista.getSelectedValue();
                c = new ClienteDittaIndividuale(NOME);
                c2 = riferimento.gc.cercaCliente(riferimento.CLIENTI, this.c);
                
                FinestraSocieta fs = new FinestraSocieta("Dati cliente:");
                Container cont = fs.getContentPane();
                RIFE = fs;
                PannelloDatiSocieta ps = new PannelloDatiSocieta(this.c2, riferimento.CLIENTI, this.RIFE);
                cont.add(ps);
                fs.setVisible(true);
            }
        }
    }
    Ho inserito l'attributo "chiamato" come puoi vedere....ma continua ad aprirmi 2 finestre ogni volta che clicco su un nome, e mi apre sempre FinestraDitta anche se chiamato==1!!!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.