iTE*_*Egg 13 java mouselistener
我有一堆JLabel,我想捕获鼠标点击事件.目前我不得不使用:
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!");
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个更整洁的方式来做这个,而不是有一堆我不希望陷阱的事件?
编辑:
class MyAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent event) {
System.out.println(event.getComponent());
}
}
Run Code Online (Sandbox Code Playgroud)
上述工作,但netBeans说添加@override anotation.这是什么意思?
编辑:好的,明白了.修复并解决了.
rin*_*rer 24
使用 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);
}
}
Run Code Online (Sandbox Code Playgroud)
可以使用MouseAdapter实现MouseListener接口的类,因此不需要实现所有方法.
但是,通过重写感兴趣的方法,可以获得所需的行为.例如,如果一个覆盖该mouseClicked方法,则可以为鼠标单击事件定义一些行为.
例如(未经测试的代码):
JLabel label = new JLabel("Hello");
label.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("Clicked!");
}
});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,单击时JLabel会打印Clicked!到控制台.
| 归档时间: |
|
| 查看次数: |
92372 次 |
| 最近记录: |