Java - 是否可以覆盖SuperClass中的ActionListener?

时间:2010-03-13 17:45:30

标签: java action listeners

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

3 个答案:

答案 0 :(得分:3)

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

    button.addActionListener(new ActionListener() {

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

然后你可以覆盖子类中的doStuff。这比看待事件更加简单。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

您唯一的选择是删除当前ActionListener并添加新的{{1}}。根据定义,您无法扩展匿名内部类:它是匿名的。