ActionListener von JCheckBox im Knoten von JTree funktioniert nicht

JavaMichael

Aktives Mitglied
Hallo,

ich möchte in einem JTree in jedem Knoten eine CheckBox haben, aber das bereitet
mir Probleme. Und zwar schaffe ich es nicht, dass sich die CheckBoxen im Tree so verhalten,
wie sie sich normalerweise verhalten würden. Mit anderen Worten: Das Kreuz in dem Viereck
erscheint nie, wenn man darauf klickt.

Meine Lösungsansätze:

1) Ich habe mich informiert und gelesen, dass ich den CellEditor überschreiben soll. Das habe
ich gemacht, allerdings kann man die CheckBox erst dann bedienen, wenn man sich im Editor-
Modus befindet und nicht einfach so, wie bei einer normalen CheckBox. Außerdem erscheint so
der Haken schon, wenn ich nur auf den Knoten drauf klicke. Dieser sollte nur dann
erscheinen, wenn ich auf das Viereck klicke.

2) Außerdem habe ich versucht, jedem Knoten einen eigenen ItemStateListener hinzuzufügen.
Dieser wird aber nicht aufgerufen.

Meine Fragen:

Was kann ich tun, dass der ItemListener bei dem Knoten aktiviert wird, wenn ich darauf klicke ?
Woran liegt es, dass die Listener nicht funktionieren bei einem Knoten im Baum ?

Mit freundlichen Grüßen,

Michael
 
Woran liegt es, dass die Listener nicht funktionieren bei einem Knoten im Baum ?
Das liegt daran, dass es sich bei den Knoten nicht um Komponenten handelt, sondern mit Hilfe eines Renderers, der wie eine Art Stempel funktioniert, gezeichnet werden. Der Spaß folgt dem Flyweight-Pattern (s. https://de.wikipedia.org/wiki/Fliegengewicht_(Entwurfsmuster)) und hat den Vorteil, dass man viele Knoten mit nur einem Objekt zeichnen kann.

Der CellEditor dürfte schon der richtige Ansatz sein, Du müsstest halt in isCellEditable schauen, ob es sich bei dem EventObject um ein MousEvent-Objekt handelt, und die Koordinaten auswerten.
 

Zurück
Oben