Java - Ist es möglich, eine Action in der übergeordneten Klasse außer Kraft zu setzen?

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

  •  19-09-2019
  •  | 
  •  

Frage

Wenn zwei Klassen haben, Class A und Class B, B eine Unterklasse von A ... wenn meine Klasse A (die übergeordnete Klasse) einen JButton mit einem ActionListener hat, die durch eine anonyme innere Klasse implementiert ist, wie kann ich außer Kraft setzen, was der Taste funktioniert in der Unterklasse?

War es hilfreich?

Lösung

Hmm, könnte man den Hörer Anruf hat eine geschützte Methode von einer Art:

    button.addActionListener(new ActionListener() {

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

Dann können Sie doStuff in der Unterklasse außer Kraft setzen. Dies scheint einfacher als Ausmisten etwa mit den Ereignissen mehr als Sie müssen.

Andere Tipps

Ich bin nicht wirklich sicher, wie Ihr Code wie folgt aussieht, aber hier ist eine eher allgemeine „Lösung“ (nicht getestet):

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

Und ein neues Action danach hinzufügen. I denken , das ist, was Sie vielleicht gesucht werden, aber ich bin nicht sicher. Ich würde nur eine weitere Action hinzufügen oder macht sie Aktionen anstelle von ActionListeners.

Ihre einzige Option ist die aktuelle ActionListener zu entfernen und einen neuen hinzufügen. Sie können nicht eine anonyme innere Klasse definitions verlängern. Es ist anonym

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top