java - 拥有匿名实现的 ActionListener? (忙光标)

标签 java swing cursor actionlistener anonymous-class

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/

相关文章:

java - 出现空白 JFrame 和无 JPanel 但已添加

javascript - 在 .replace() 之后恢复光标位置

java - IndexOutOfBounds - 需要帮助

java - 如何从文本文件填充Java中的两个组合框?

java - 如何从一个输入答案中提取一定的信息

java - Swing 复选框

sql - 重用的T-SQL游标的起始位置?

html - 单击和拖动时自定义 CSS 光标消失并变为 I-Bar

jvm - JNLP 安装扩展 JAR

java - 如何向数据库中的字段添加一个?