Java - Est-il possible de passer outre un ActionListener dans la superclasse?
Question
Si deux classes ont, Class A
et Class B
, B est une sous-classe A ... si ma classe A (la superclasse) a une JButton
avec un ActionListener
qui est mis en œuvre par une classe interne anonyme, comment puis-je remplacer ce que le bouton fait dans la sous-classe?
La solution
Hmm, vous pourriez avoir l'auditeur appeler une méthode protégée de quelque sorte:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
doStuff();
}
});
Ensuite, vous pouvez remplacer doStuff
dans la sous-classe. Cela semble plus simple que déblayage au sujet des événements plus que vous devez.
Autres conseils
Je ne suis pas sûr de savoir comment votre code ressemble, mais voici une « solution » plutôt générique (non testé):
for (ActionListener al : super.getThatButton().getActionListeners())
{
super.getThatButton().removeActionListener(al);
}
Et ajouter une nouvelle ActionListener après. I pense qui est ce que vous cherchez peut-être, mais je ne suis pas sûr. Je voudrais simplement ajouter une autre ActionListener ou le faire utiliser des actions au lieu de ActionListeners.
Votre seule option est de supprimer le ActionListener
actuel et ajouter un nouveau. Vous ne pouvez pas étendre une classe interne anonyme par définition:. Il est anonyme