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...
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!
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!