3

如果有两个类,Class A并且Class B,B 是 A 的子类...如果我的 A 类(超类)有一个JButtonActionListener匿名内部类实现的,我如何覆盖按钮在子类中的作用?

4

3 回答 3

4

嗯,您可以让侦听器调用某种受保护的方法:

    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            doStuff();
        }
    });

然后你可以doStuff在子类中覆盖。这似乎比处理事件更简单。

于 2010-03-13T19:41:59.613 回答
1

我不太确定您的代码是什么样子,但这是一个相当通用的“解决方案”(未经测试):

for (ActionListener al : super.getThatButton().getActionListeners())
{
    super.getThatButton().removeActionListener(al);
}

然后添加一个新的 ActionListener 。我认为这就是您可能正在寻找的东西,但我不确定。我只是添加另一个 ActionListener 或让它使用 Actions 而不是 ActionListeners。

于 2010-03-13T18:00:31.590 回答
1

您唯一的选择是删除当前ActionListener并添加一个新的。您不能根据定义扩展匿名内部类:它是匿名的。

于 2010-03-13T18:00:37.230 回答