Java MouseListener

2022-09-03 03:59:57

我有一堆JLabels,我想捕获鼠标点击事件。目前我不得不使用:

public void mouseClicked(MouseEvent arg0) {

}

public void mouseExited(MouseEvent arg0) {

}

public void mouseEntered(MouseEvent arg0) {

}

public void mousePressed(MouseEvent arg0) {

}

public void mouseReleased(MouseEvent arg0) {

    System.out.println("Welcome to Java Programming!"); 
}

我想知道是否有一种更整洁的方法可以做到这一点,而不是有一堆我不想陷阱的事件?

编辑:

    class MyAdapter extends MouseAdapter {
    public void mouseClicked(MouseEvent event) {

        System.out.println(event.getComponent());
    }
}

以上是有效的,但netBeans说添加@override注释。这是什么意思?

编辑:好的,知道了。固定并解决。


答案 1

MouseAdapter()

用于接收鼠标事件的抽象适配器类。此类中的方法为空。此类的存在是为了方便创建侦听器对象。因此,您只需要实现您喜欢的方法,例如以下示例:

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);
  }
}

答案 2

可以使用 MouseAdapter 类,该类实现 MouseListener 接口,因此不需要实现所有方法。

但是,通过覆盖感兴趣的方法,可以获得所需的行为。例如,如果重写该方法,则可以为鼠标单击事件定义一些行为。mouseClicked

例如(未经测试的代码):

JLabel label = new JLabel("Hello");

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

在上面的代码中,单击时会将 “” 打印到控制台。JLabelClicked!


推荐