Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema JButton

  1. #1

    Problema JButton

    Ciao a tutti. Sto iniziando a studiare ora la swing e quindi ancora non sono molto ferrato!
    Io ho una JFrame con 9 bottoni. E' possibile in qualche modo avere un metodo che mi di come return il JButton premuto??
    Io pensavo ma getSource() ma non sono riuscito a combinare nulla.
    Vi ringrazio in anticipo!

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Problema JButton

    Originariamente inviato da LucaSarge
    Ciao a tutti. Sto iniziando a studiare ora la swing e quindi ancora non sono molto ferrato!
    Io ho una JFrame con 9 bottoni. E' possibile in qualche modo avere un metodo che mi di come return il JButton premuto??
    Io pensavo ma getSource() ma non sono riuscito a combinare nulla.
    Vi ringrazio in anticipo!
    getSource() va bene, tu come lo usi?
    (tradotto: posta il codice che hai scritto)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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

    Re: Problema JButton

    Originariamente inviato da LucaSarge
    Ciao a tutti. Sto iniziando a studiare ora la swing e quindi ancora non sono molto ferrato!
    Io ho una JFrame con 9 bottoni. E' possibile in qualche modo avere un metodo che mi di come return il JButton premuto??
    Io pensavo ma getSource() ma non sono riuscito a combinare nulla.
    Vi ringrazio in anticipo!
    Per gestire l'azione su un pulsante, si registra un ActionListener.
    La implementazione di ActionListener la puoi fare con classi distinte (anche anonymous inner class) per ciascun pulsante oppure puoi fare una sola classe che implementa ActionListener, ma con istanze distinte o addirittura una sola istanza.
    Quello che conta è che se lo stesso oggetto che implementa ActionListener deve gestire più pulsanti, allora devi distinguerli. E in genere basta appunto getSource() che ti dà il riferimento a quel pulsante azionato. Ti basta tenere i riferimenti ai pulsanti e fare confronti con == .
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Non ho postato il codice perché non sono riuscito a farlo. Però dalle altre discussioni avevo capito che dovevo implementare ActionListener. Per favore fatemi un esempio in cui ho 2 bottoni e l'uscita mi da il JButton premuto... Grazie!

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da LucaSarge
    Non ho postato il codice perché non sono riuscito a farlo. Però dalle altre discussioni avevo capito che dovevo implementare ActionListener. Per favore fatemi un esempio in cui ho 2 bottoni e l'uscita mi da il JButton premuto... Grazie!
    Abbozzato e scritto al volo:

    codice:
    public class MioFrame extends JFrame implements ActionListener {
        private JButton button1;
        private JButton button2;
    
        public MioFrame() {
            // ......
            
            button1 = new JButton("Button 1");
            button2 = new JButton("Button 2");
            
            button1.addActionListener(this);
            button2.addActionListener(this);
    
            // ......
        }
        
        // ......
    
        public void actionPerformed(ActionEvent event) {
            Object source = event.getSource();
            
            if (source == button1) {
                // .... azionato button 1
            } else if (source == button2) {
                // .... azionato button 2
            }
        }
    }
    E non è comunque l'unico scenario, avrei potuto:
    - implementare ActionListener distinti per ciascun pulsante con delle anonymous inner class.
    - implementare un unico ActionListener come regular inner class.
    e ancora altri più "stravaganti" ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    dovresti fare una cosa del genere:

    codice:
    ActionListener al = new ActionListener () {
       public void actionPerformed (ActionEvent ae) {
          ae.getSource ();    //poi con questo ci fai quello che vuoi..
       }
    };
    
    JButton b1 = new JButton ();
    b1.addActionListener (al);
    JButton b2 = new JButton ();
    b2.addActionListener (al);
    ...
    ...

  7. #7
    Grazie mille a tutti! Ho fatto come avete detto voi e funziona tutto!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.