首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java MouseListener

Java MouseListener
EN

Stack Overflow用户
提问于 2010-04-19 23:35:07
回答 5查看 103.7K关注 0票数 16

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

代码语言:javascript
复制
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!"); 
}

我想知道是否有一种更整洁的方式来做这件事,而不是有一堆我不希望的事件陷阱?

编辑:

代码语言:javascript
复制
    class MyAdapter extends MouseAdapter {
    public void mouseClicked(MouseEvent event) {

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

上面的方法是有效的,但是netBeans说添加@override另存。这是什么意思?

编辑: ok,知道了。已修复并已解决。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-19 23:38:40

使用MouseAdapter()

用于接收鼠标事件的抽象适配器类。该类中的方法为空。这个类的存在是为了方便创建侦听器对象。所以你只需要实现你喜欢的方法,比如下面的例子:

代码语言:javascript
复制
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);
  }
}
票数 27
EN

Stack Overflow用户

发布于 2010-04-19 23:38:06

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

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

例如(未测试的代码):

代码语言:javascript
复制
JLabel label = new JLabel("Hello");

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

在上面的代码中,JLabel将在单击时将"Clicked!“打印到控制台。

票数 8
EN

Stack Overflow用户

发布于 2010-04-19 23:37:42

相反,您可以扩展MouseAdapter,只覆盖您真正感兴趣的事件。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2668718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档