Überschriebene setSelected() in ButtonGroup wird nicht aufgerufen

zusta

Mitglied
Hey Leutz,

ich bastel mir gerade mit Jigloo eine GUI zusammen und habe auf einem Panel mehrere Toggle-Buttons, die sich allesamt eine ButtonGroup teilen. Um jetzt auch eine nullable-Selektion, also wo kein Button aktiv ist, realisieren zu können, habe ich mir jetzt eine eigene ButtonGroup geschrieben, die von ButtonGroup erbt, habe meine ganzen Buttons, dieser Gruppe zugeordnet und das Ganze funktioniert auch schon soweit, wie ich mir das vorstelle. Allerdings hab ich jetzt die setSelected()-Methode überschrieben, in der Hoffnung, dass diese bei jedem Klick auf einen der Toggle-Buttons aufgerufen wird, was aber nicht der Fall ist. Eigenlich wird meine Methode nie aufgerufen (außer ich rufe diese manuell auf), jetzt stellt sich mir nur die Frage nach dem W_A_R_U_M. Ich dachte, die setSelected()-Methode wird automatisch durch die Buttons aufgerufen, die sich in der Gruppe befinden... einen Fehler kann ich in meinem Quellcode auch nicht finden... vlt. findet ja irgendjemand einen...

Java:
public class MyButtonGroup<T> extends ButtonGroup {
	
	private HashSet<ChangeListener> pChangeListeners;

	public MyButtonGroup() {
		pChangeListeners = new HashSet<ChangeListener>();
	}

	public void addChangeListener(ChangeListener cl) {
		pChangeListeners.add(cl);
	}
	
	@Override
	public void setSelected(ButtonModel bm, boolean b) {
		System.out.println("Die Nachricht erscheint nicht in der Konsole...");

		if (super.isSelected(bm) && !b) for (ChangeListener cl: pChangeListeners) cl.stateChanged(new ChangeEvent(bm));

		if (!b && super.isSelected(bm)) clearSelection();
		else super.setSelected(bm, b);
	}
	
}

Im übrigen... gibt es bei Java auch Property-Methoden wie es sie z.B. in C/C++ oder D gibt, damit man bestimmte Methoden ohne die Klammern aufrufen kann (z.B. length bei einer for-Schleife über ein Array)?

In diesem Sinne schonmal vielen Dank für alle Antworten!
 

André Uhres

Top Contributor
Hallo Zusta,

bei mir funktioniert Dein Code: "setSelected" wird aufgerufen!

Gruß,
André

PS: natürlich kommt auch die Ausgabe auf der Konsole!
Vielleicht hast du zwei Buttongroup-Klassen und hast dich mit der Klasse geirrt?
 
Zuletzt bearbeitet:

zusta

Mitglied
Oh man... hätte ich auch selbst drauf kommen können :D - die Buttons hatten zwar die richtige Methode aufgerufen, um an die ButtonGroup zu kommen, allerdings hatte ich vergessen in der Methode das Ganze auf meine eigene Klasse umzustellen, weshalb immer noch eine Instanz von ButtonGroup erzeugt wurde *g*.
 

Ähnliche Java Themen

Neue Themen


Oben