Java MouseListener

前端 未结 5 1619
隐瞒了意图╮
隐瞒了意图╮ 2020-12-05 19:41

I have a bunch of JLabels and i would like to trap mouse click events. at the moment i am having to use:

public void mouseClicked(MouseEvent arg0) {

}

publ         


        
相关标签:
5条回答
  • 2020-12-05 20:05

    You can inherit from java.awt.event.MouseAdapter and only override the methods for the event(s) you are interested in.

    0 讨论(0)
  • 2020-12-05 20:21

    some example of mouse event clicked,

    in the same way you can use mousePressed or other mouse events

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Work1 extends JFrame{
    
        private JPanel panelNew;
    
        public Work1(){
            super("Work 1");
    
    
            // create Panel
            panelNew = new JPanel();
            panelNew.setLayout(null);
            panelNew.setBackground(Color.cyan );
            add(panelNew);
    
            // create Button
            JButton btn = new JButton("click me");
            // position and size of a button
            btn.setBounds(100, 50, 150, 30);
    
            panelNew.add(btn);
    
    
            // add event to button
            btn.addMouseListener(new MouseAdapter() { 
                    public void mouseClicked(MouseEvent me) { 
    
                         // change text of button after click
    
                         if (btn.getText() == "abraCadabra"){
                              btn.setText("click me again") ;
                         }
                         else  btn.setText("abraCadabra");
                    } 
             });        
        }
    
    
    
    
        public static void main(String[] args){
            Work1 go1 = new Work1();
            go1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            go1.setSize(320,200);
            go1.setVisible(true);   
        }
    
    
    
    
    }
    
    0 讨论(0)
  • 2020-12-05 20:22

    One could use a MouseAdapter class, which implements the MouseListener interface, so one does not need to implement all the methods.

    However, by overriding the methods of interest, one can get the desired behavior. For example, if one overrides the mouseClicked method, then one can define some behavior for the mouse click event.

    For example (untested code):

    JLabel label = new JLabel("Hello");
    
    label.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            System.out.println("Clicked!");
        }
    });
    

    In the code above, the JLabel will print "Clicked!" to the console upon being clicked on.

    0 讨论(0)
  • 2020-12-05 20:24

    You can extend MouseAdapter instead, and just override the events you're really interested in.

    0 讨论(0)
  • 2020-12-05 20:26

    Use MouseAdapter()

    An abstract adapter class for receiving mouse events. The methods in this class are empty. This class exists as convenience for creating listener objects. So you need to implement only the method you like such as following example:

    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class MainClass extends JPanel {
    
      public MainClass() {
    
          addMouseListener(new MouseAdapter() { 
              public void mousePressed(MouseEvent me) { 
                System.out.println(me); 
              } 
            }); 
    
      }
    
      public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.getContentPane().add(new MainClass());
    
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        frame.setSize(200, 200);
        frame.setVisible(true);
      }
    }
    
    0 讨论(0)
提交回复
热议问题