我想让一个JPanel响应一个MouseEvent,比如mousePressed(),而不是其他人。 我可以通过添加到JPanel对象的以下代码来实现:
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
//Some action here
}
});
但是,匿名函数要求我在其中使用最终变量。我的程序规范不允许我这样做。
我也可以将MouseEvents定义为不是内部类,但是在外部,但是我必须为MouseListener接口中的所有函数提供实现,例如mouseClicked(),mouseEntered(),mouseExited()等。
有没有其他方法可以实现我正在尝试做的事情,即定义mousePressed()函数而不必在其中使用最终变量,也无需在界面中定义其他函数?
非常感谢!
编辑:我意识到我提供的代码运行没有错误,因为内部类正在创建一个抽象类MouseAdapter的对象。然而,我的问题仍然存在:如果我不想定义抽象类的所有方法,也不必使用内部类,有没有办法这样做?
答案 0 :(得分:0)
其中一个例子:
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);
}
}
另外,您可以使用官方教程here。