Java. Можно ли переопределить ActionListener в суперклассе?
Вопрос
Если у вас два класса, 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
и добавить новый.Вы не можете расширить анонимный внутренний класс по определению:это анонимно.