ActionListeners(匿名实现)通常添加如下:
someobject.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
...
}
});
但我想在每个“actionPerformed”事件前后执行我自己的代码。因此,假设我在自己的类中实现了 ActionListener 接口(interface),例如:
public class MyOwnActionListener implements ActionListener{
public void actionPerformed(final ActionEvent ae) {
// own code
super.actionPerformed(ae); // I know, this makes no sense, cause ActionListener is an interface
// own code
}
}
我希望能够做这样的事情:
someobject.addActionListener(new MyOwnActionListener(){
public void actionPerformed(ActionEvent ae){
...
}
});
在我的类(class)中,应该执行匿名 actionPerformed
中的代码,而不是 super.actionPerformed(ae);
。我知道,我不能为 MyOwnActionListener 提供匿名实现,因为它是一个类而不是一个接口(interface),而且 super.actionPerformed(ae);
不起作用,因为我想调用继承类的方法,而不是父类(super class)的方法 - 但我如何重新设计我的代码以尽可能少地更改 ActionListener 的匿名实现?
背景:
我正在尝试在一个非常大的 java 项目(有很多匿名 ActionListeners)上实现繁忙光标管理。所以,如果我必须向每个匿名 actionPerformed()
添加我自己的代码(更改光标),我会发疯的。
有什么想法或建议吗?
最佳答案
尝试;
public abstract class MyOwnActionListener implements ActionListener{
@Override
public void actionPerformed(final ActionEvent ae) {
// own code
doActionPerformed(ae);
// own code
}
protected abstract void doActionPerformed(ActionEvent ae);
}
然后在子类中实现doActionPerformed。
关于java - 拥有匿名实现的 ActionListener? (忙光标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134160/