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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top