Я метод, который я отправил работает. Проблема в том, что если вы не удалите и не добавите кнопку в подкласс, это не изменит действие, которое будет выполняться
class ParentClass extends JPanel{
JButton button;
ActionListener buttonAction;
ParentClass{
button = new JButton("Parent Action");
buttonAction = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("The button was clicked by the parent class");
}
};
button.add(buttonAction);
add(button);
}
}
Так что в подклассе вы бы сделали следующее:
class ChildClass extends ParentClass{
JButton button;
ActionListener buttonAction;
ChildClass{
super();
buttonAction = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("The button was clicked by the child class");
}
};
button.removeActionListener(button.getActionListeners()[0]);
button.addActionListener(buttonAction);
}
}
Я, однако, не знаю почему, но хотел бы получить объяснение, почему buttonAction
пришлось перерегистрировать.