我有一堆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另存。这是什么意思?
编辑: ok,知道了。已修复并已解决。
发布于 2010-04-19 23:38:40
使用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);
}
}发布于 2010-04-19 23:38:06
可以使用实现MouseListener接口的MouseAdapter类,因此不需要实现所有方法。
但是,通过覆盖感兴趣的方法,可以获得所需的行为。例如,如果重写了mouseClicked方法,则可以为鼠标单击事件定义一些行为。
例如(未测试的代码):
JLabel label = new JLabel("Hello");
label.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("Clicked!");
}
});在上面的代码中,JLabel将在单击时将"Clicked!“打印到控制台。
发布于 2010-04-19 23:37:42
相反,您可以扩展MouseAdapter,只覆盖您真正感兴趣的事件。
https://stackoverflow.com/questions/2668718
复制相似问题