Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    15

    [JAVA] Associare un MouseListener ad un JButton

    Ciao a tutti.

    Da poco sto avendo a che fare con java.Swing e volevo sapere dov'è l'errore nel codice che segue.
    Non riesco a far riconoscere il click sul JButton newG

    codice:
    public class MouseSpy extends MouseAdapter{        
    
        public void mouseClicked(MouseEvent e){
    
                if(e.getSource()==newG)System.out.println("n");
    
                JButton y = (JButton)e.getComponent();
                if(y.equals(newG))System.out.println("m");
            }
        }
    come si può vedere ho fatto diverse prove (e queste non sono le uniche) ma se clicco sul tasto non mi esce nessuna stringa sul terminale. ovviamente al tasto newG ho aggiunto il "MouseSpy" ma niente. Dov'è che sbaglio

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Capa[00] Visualizza il messaggio
    codice:
                if(e.getSource()==newG)System.out.println("n");
    Materialmente, dove è definito/inizializzato newG?
    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
    Dec 2014
    Messaggi
    15
    i tasti sono istanze della classe NewGame e sono inizializzate nel costruttore

    codice:
    public class NewGame extends JFrame{
        private JButton newG, load;
        private MouseSpy ml;
        
        public NewGame(){
            setTitle("NewGame");
            setSize(300,70);
            setLocation(500,200);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            ml = new MouseSpy();
            newG = new JButton("New Game");
            load = new JButton("Load");
            newG.addMouseListener(ml);
            load.addMouseListener(ml);
            
            setLayout(new GridLayout(1,2,3,3));
            add(newG);
            add(load);
            setVisible(true);
        }//Finestra()

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Se MouseSpy è (come penso) esterno a NewGame, secondo te, come fa MouseSpy ad accedere a newG privato in NewGame?
    Se MouseSpy fosse una inner class di NewGame, allora sì, funzionerebbe.


    P.S. sui pulsanti di norma si registra un ActionListener se interessa solo la "azione" e basta.
    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
    Dec 2014
    Messaggi
    15
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se MouseSpy fosse una inner class di NewGame, allora sì, funzionerebbe.


    P.S. sui pulsanti di norma si registra un ActionListener se interessa solo la "azione" e basta.
    Cavolo è vero!! Grazie mille

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.