Java. Можно ли переопределить ActionListener в суперклассе?

StackOverflow https://stackoverflow.com/questions/2439325

  •  19-09-2019
  •  | 
  •  

Вопрос

Если у вас два класса, Class A и Class B, B является подклассом A... если мой класс A (суперкласс) имеет JButton с ActionListener который реализован анонимным внутренним классом, как я могу переопределить то, что делает кнопка в подклассе?

Это было полезно?

Решение

Хм, вы могли бы заставить слушателя вызвать какой-нибудь защищенный метод:

    button.addActionListener(new ActionListener() {

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

Тогда вы можете переопределить doStuff в подклассе.Это кажется проще, чем возиться с событиями больше, чем нужно.

Другие советы

Я не совсем уверен, как выглядит ваш код, но вот довольно общее «решение» (не проверено):

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

И после этого добавьте новый ActionListener.я думать возможно, это то, что вы ищете, но я не уверен.Я бы просто добавил еще один ActionListener или заставил бы его использовать Actions вместо ActionListeners.

Ваш единственный вариант - удалить текущий ActionListener и добавить новый.Вы не можете расширить анонимный внутренний класс по определению:это анонимно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top