Icon einer JCheckBox

Status
Nicht offen für weitere Antworten.

JuVman5KL

Mitglied
Hallo zusammen,
ich möchte gerne das Icon einer JCheckBox anpassen. Dabei gehe ich erstmal davon aus, dass das Icon jenes Symbol ist, das man bei der JCheckBox zum Abhaken anklickt und nicht ein weiteres, das man z. B. noch zwischen dem Abhaksymbol und dem Text einfügen kann. Konkret möchte ich die Hintergrundfarbe des Kästchens ändern, in das der Haken gesetzt wird. Nach bisherigem Studium der API und des Quelltextes verstehe ich die JCheckBox so, dass für das Kästechen ein Icon gezeichnet wird (mit der paintIcon()-Methode) und darin dann ein Haken (mit der drawCheck()-Methode). Die Animation des Kästenchens, wenn es z. B. mit der Maus berührt wird, scheint ebenfalls die paintIcon()-Methode zu übernehmen. Ich möchte nun sehr gerne wissen, wie ich herausfinden kann, welcher Klasse diese Methoden entstammen, damit ich für meine selbst geschriebene Klasse, die dann von der gesuchten Klasse erbt, ein wenig Quelltext kopieren kann, denn das originale Icon von JCheckBox nachzuahmen scheint mir, wenngleich nicht unmöglich, doch sehr aufwendig. Mein Problem ist nun, dass der Rückgabewert der Methode getIcon().getClass() einer Instanz von JCheckBox null ist und ich auch sonst aus der Dokumentation, durch Ausprobieren o. Ä. nicht schlau werde.

Vielen Dank im Voraus für die schnellen Antworten

Viele Grüße
 
An die Standard-Icons der CheckBox kommst Du nicht wirklich heran. Das jeweilige Look-And-Feel ist dafür verantwortlich, die Standard-Icons zu zeichnen; sie sehen also nicht immer gleich aus. Grundsätzlich würde ich davon abraten, Standard-Elemente einer Komponente farblich zu verändern.

Was willst Du denn eigentlich mit der alternativen Hintergrundfarbe ausdrücken? Lässt sich das in Deinem GUI nicht ggf. auch anders (besser) realisieren?

Ebenius
 
Hallo,
danke für deine Antwort. Ich wollte erreichen, dass in einem JTree die JCheckBox einer Eltern-Node grau hinterlegt ist, wenn nicht alle Kinder selektiert sind. Ist also nicht so wichtig. Ich habe mir schon gedacht, dass man das Icon für jedes LookAndFeel anpassen muss. Allerdings wurdert es mich, dass es für mein Anliegen keine übergreifende Methode gibt, da man so etwas ja durchaus öfters sieht (nur sind das dann wahrscheinlich keine Java-Programme).

Viele Grüße
 
Ich wollte erreichen, dass in einem JTree die JCheckBox einer Eltern-Node grau hinterlegt ist, wenn nicht alle Kinder selektiert sind.
Verstehe ich das richtig? Du benutzt eine JCheckBox in einem CellRenderer eines JTree? In dem Fall deaktiviere die JCheckBox einfach, wenn sie grau sein soll. Das ist gängige Praxis und funktioniert mit allen vernünftigen L&Fs.

HTH, Ebenius
 
Hallo Ebenius,
ich verstehe deaktivieren sowohl als Deselektieren der JCheckBox, als auch als Deaktivieren mit .setEnabled(false). Beides nützt mir nichts, da ich durch das Deselektieren nicht den gewüschten Status zwischen voll selektiert und gar nichts selektiert (beides in Bezug auf die Kinder-Nodes) erreiche (ist vielleicht vorher nicht ganz klar geworden) und durch .setEnabled(false) die JCheckBox nicht mehr verwenden kann.

Viele Grüße
 
Hallo Ebenius,
ich verstehe deaktivieren sowohl als Deselektieren der JCheckBox, als auch als Deaktivieren mit .setEnabled(false). Beides nützt mir nichts, da ich durch das Deselektieren nicht den gewüschten Status zwischen voll selektiert und gar nichts selektiert (beides in Bezug auf die Kinder-Nodes) erreiche (ist vielleicht vorher nicht ganz klar geworden) und durch .setEnabled(false) die JCheckBox nicht mehr verwenden kann.
Okay, also doch kein CellRenderer, dann hatte ich das falsch verstanden. Hilft Dir dieser Foreneintrag weiter?

Swing - Is there a tri-state check box in swing?

Ebenius
 
Super, so etwas habe ich gesucht. Vielen Dank. Allerdings muss die die JCheckBox schon durch einen TreeCellRenderer dargestellt werden. Das kriege ich dann aber schon hin. Danke nochmal.

Viele Grüße
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben