Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA] event mouse on click

    Buongiorno,

    stavo cercando una soluzione per eseguire un metodo al click del mouse.
    non ho trovato delle guide decenti e chiedo a voi.

    posto il codice
    codice:
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Main extends JPanel {
        
        public Main() {
            setLayout(new FlowLayout(FlowLayout.LEFT,20,20));
            add(new JButton("new node"));
            add(new JButton("new arch"));
            setBackground(Color.BLACK);
        }
        
        public static void main(String[] args) {
            JFrame mioframe=new JFrame ("Algoritmo");
            mioframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            mioframe.setLocation(100,100);
            mioframe.setSize(250,150);
            
            mioframe.setContentPane(new Main());
            mioframe.setVisible(true);
        }
        
    }
    grazie della lettura..

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

    Re: [JAVA] event mouse on click

    Originariamente inviato da xxstykkyxx
    stavo cercando una soluzione per eseguire un metodo al click del mouse.
    non ho trovato delle guide decenti e chiedo a voi.
    In AWT/Swing si usano i "listener" per gestire gli eventi. Nel caso dei pulsanti un java.awt.event.ActionListener.

    tuoPulsante.addActionListener(implementazioneListe ner);

    Es.

    codice:
    tuoPulsante.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // il pulsante è stato cliccato
        }
    });
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: [JAVA] event mouse on click

    codice:
    tuoPulsante.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // il pulsante è stato cliccato
        }
    }
    Ho provato a usare questo codice, il problema è che mi da due eventi: forse un evento perchè ho premuto e uno perchè ho rilasciato il tasto sinistro..

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

    Re: Re: Re: [JAVA] event mouse on click

    Originariamente inviato da xxstykkyxx
    Ho provato a usare questo codice, il problema è che mi da due eventi: forse un evento perchè ho premuto e uno perchè ho rilasciato il tasto sinistro..
    No, al click il actionPerformed è 1 solo.

    P.S. Posta il codice, se non è lungo. E se non hai familiarità con i listener, potrei suggerirti la guida online ufficiale Writing Event Listeners
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    codice:
    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Main extends JPanel implements ActionListener {
        
        private static Button node=new Button("New Node");
        private static Button arch=new Button("New Arch");
    
        
        public Main () {
            setLayout(new FlowLayout(FlowLayout.LEFT,20,20));
            this.add(node);
            this.add(arch);
            node.addActionListener(this);
        }
    
        public static void main(String[] args) {
    
            new Main();
            
            JFrame mioframe=new JFrame ("Algoritmo");
            mioframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            mioframe.setLocation(100,100);
            mioframe.setSize(250,150);
            mioframe.add(node);
            mioframe.add(arch);
            mioframe.setContentPane(new Main());
            mioframe.setVisible(true);
            
        }
    
        public void actionPerformed(ActionEvent e) {
            System.out.println("NEW NODE");
        }
    
    }
    Ad ogni click sul bottone, scrive:
    NEW NODE
    NEW NODE

    L'evento compare due volte..

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xxstykkyxx
    Ad ogni click sul bottone, scrive:
    NEW NODE
    NEW NODE

    L'evento compare due volte..
    Ci credo ... così ha davvero poco senso, oltre che essere sbagliato concettualmente.

    Il new Main() iniziale non serve e non ha senso. Stai istanziando il pannello da solo che poi tanto non viene aggiunto in un frame.

    Però il Button node è un campo statico (quindi uno solo) e aggiungi il listener sia quando fai new Main(), sia quando nel main fai poi (correttamente per creare il frame) il mioframe.setContentPane(new Main());

    Pertanto sul Button sono registrati 2 listener.

    Inoltre Button è di AWT. Cerca di non mischiare componenti AWT e Swing.

    Comunque la struttura e l'approccio è sbagliato. Se vuoi un sorgente basilare per un JFrame te lo posso fornire ma così come hai fatto ... no!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.