Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Jbutton premuto

  1. #1

    Jbutton premuto

    Ciao a tutti, mi serve un aiuto:
    in pratica ho un frame con 2 JButton e quando si clicca uno dei due si apre un nuovo frame. Non riesco pero a fare in modo di conoscere quale dei due è stato premuto; come devo fare???

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Andrea_95 Visualizza il messaggio
    Ciao a tutti, mi serve un aiuto:
    in pratica ho un frame con 2 JButton e quando si clicca uno dei due si apre un nuovo frame. Non riesco pero a fare in modo di conoscere quale dei due è stato premuto; come devo fare???
    Dipende da come hai gestito i listener. Hai usato due implementazioni distinte di ActionListener? O una sola? In quest'ultimo caso devi prendere il source dal ActionEvent e confrontarlo (si intende con == ) con i reference dei tuoi pulsanti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Questo è il codice che ho:

    public class NewGame3 extends JPanel implements MouseListener {

    static JFrame frame3 = new JFrame();
    Image immagine;

    public NewGame3 (){
    String path="C:/Users/andrea/Desktop/Immagini/uno.jpg";
    immagine = Toolkit.getDefaultToolkit().createImage(path);
    load(immagine);
    }
    public void load(Image immagine){
    MediaTracker mt = new MediaTracker(frame3);
    mt.addImage(immagine, 1);
    try {
    mt.waitForID(1);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawImage(immagine, 0, 0,720,480, null);
    }

    public void mouseClicked(MouseEvent arg0) {}
    public void mouseEntered(MouseEvent arg0) {}
    public void mouseExited(MouseEvent arg0) {}
    public void mousePressed(MouseEvent arg0) {

    frame3.setSize(720, 480);
    Start_Menu start = new Start_Menu();
    frame3.addKeyListener(start);

    NewGame3 a = new NewGame3();
    frame3.getContentPane().add(a);

    frame3.setVisible(true);
    }
    public void mouseReleased(MouseEvent arg0) {
    }


    }


    Nel "MousePressed" crea un nuovo frame dopo che il bottone è stato premuto (ti posto anche l'altro codice):

    public class NewGame2 extends NewGame implements MouseListener {

    static JFrame frame2 = new JFrame();
    JButton scenario1 = new JButton("Scenario 1");
    JButton scenario2 = new JButton("Scenario 2");
    JButton scenario3 = new JButton("Casuale");
    public NewGame2(){
    scenario1.setDisplayedMnemonicIndex(3);
    }
    public void mouseClicked(MouseEvent arg0) {}
    public void mouseEntered(MouseEvent arg0) {}
    public void mouseExited(MouseEvent arg0) {}
    public void mousePressed(MouseEvent arg0) {

    frame.dispose();

    GridLayout griglia = new GridLayout(5,5);
    frame2.setSize(720, 480);
    frame2.setLayout(griglia);

    NewGame3 scenario_uno = new NewGame3();
    scenario1.addMouseListener(scenario_uno);

    NewGame3 scenario_due = new NewGame3();
    scenario2.addMouseListener(scenario_due);

    Icon primo_scenario = new ImageIcon("C:/Users/andrea/Desktop/immagini/uno.jpg");
    JLabel primo = new JLabel();
    primo.setIcon(primo_scenario);

    Icon secondo_scenario = new ImageIcon("C:/Users/andrea/Desktop/immagini/due.jpg");
    JLabel secondo = new JLabel();
    secondo.setIcon(secondo_scenario);

    frame2.add(new JLabel());
    frame2.add(new JLabel());
    frame2.add(new JLabel("SELEZIONA UNO SCENARIO"));
    frame2.add(new JLabel());
    frame2.add(new JLabel());

    frame2.add(new JLabel());
    frame2.add(primo);
    frame2.add(secondo);
    frame2.add(new JLabel());
    frame2.add(new JLabel());

    frame2.add(new JLabel());
    frame2.add(new JLabel());
    frame2.add(new JLabel());
    frame2.add(new JLabel());
    frame2.add(new JLabel());

    frame2.add(new JLabel());
    frame2.add(scenario1);
    frame2.add(scenario2);
    frame2.add(scenario3);
    frame2.add(new JLabel());

    frame2.add(new JLabel());
    frame2.add(new JLabel());
    frame2.add(new JLabel());
    frame2.add(new JLabel());
    frame2.add(new JLabel());


    frame2.setVisible(true);
    }
    public void mouseReleased(MouseEvent arg0) {}
    }

    Io voglio sapere quale bottone è stato premuto...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Andrea_95 Visualizza il messaggio
    Io voglio sapere quale bottone è stato premuto...
    Sui JButton generalmente si registra un ActionListener, se vuoi solo avere notifica della "azione". MouseListener è ovviamente anche usabile ma è più a basso livello e si usa per casi abbastanza particolari.

    Quindi o implementi 2 ActionListener differenti, magari con delle anonymous inner class:

    codice:
    scenario1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // Il JButton scenario1 è stato premuto, fai quello che vuoi ...
        }
    });
    
    scenario2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // Il JButton scenario2 è stato premuto, fai quello che vuoi ...
        }
    });

    Oppure ne implementi uno solo, con una sola anonymous inner class, con una sola regular inner class o magari implementando ActionListener nella tua classe principale.

    Es:

    codice:
    public class MyFrame extends JFrame implements ActionListener {
        private JButton scenario1;
        private JButton scenario2;
        
        public MyFrame() {
            scenario1 = ....
            scenario2 = ....
    
            scenario1.addActionListener(this);
            scenario2.addActionListener(this);
        }
        
        public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            
            if (source == scenario1) {
                // Il JButton scenario1 è stato premuto, fai quello che vuoi ...
            } else if (source == scenario2) {
                // Il JButton scenario2 è stato premuto, fai quello che vuoi ...
            }
        }
    }

    Questi non solo gli unici scenari possibili.


    P.S. vedo una variabile JFrame static .... brutto.
    Ultima modifica di andbin; 07-12-2015 a 20:13
    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.