Java - Ist es möglich, eine Action in der übergeordneten Klasse außer Kraft zu setzen?
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?
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