【问题标题】:Java - Is it possible to override an ActionListener in the SuperClass?Java - 是否可以覆盖超类中的 ActionListener?
【发布时间】:2010-03-13 17:45:29
【问题描述】:

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

【问题讨论】:

  • 您实际上不能覆盖父内部类。我不确定swing中是否存在这样的功能,是否可以在处理完事件后停止传播?如果是这样,您可以在您的子类中添加另一个侦听器来执行处理并且不允许事件传播。

标签: java action listeners


【解决方案1】:

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

    button.addActionListener(new ActionListener() {

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 喜欢上面提到的那个好人吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      相关资源
      最近更新 更多