# JCheckBox disabled text color



## Christoph74 (7. Mrz 2019)

Hallo,

wie kann ich bei einer disabled JCheckBox den Text in "normal" Schwarz darstellen?
(ist bei disabled standardmäßig grau).

Hab schon mit 
        UIManager.put("CheckBox.disabledForeground", Color.BLACK); 
rum gespielt, leider ohne Erfolg...

Danke 
Christoph


----------



## Robat (7. Mrz 2019)

Probiere es mal mit `UIManager.put("CheckBox.disabledText", Color.BLACK);`


----------



## Christoph74 (7. Mrz 2019)

Hallo,

Danke für die Nachricht, leider kein Erfolg... -> ich arbeite mit NetBeans und habe es sowohl vor als auch nach der initComponents gesetzt:

*


		Java:In die Zwischenablage kopieren


 [/B]
UIManager.put("CheckBox.disabledForeground", Color.BLACK);       
       
        initComponents();

UIManager.put("CheckBox.disabledForeground", Color.BLACK);


Grüße
Christoph*


----------



## Robat (7. Mrz 2019)

Kann ich nicht nachvollziehen. Das hier funktioniert wunderbar:

```
UIManager.put("CheckBox.disabledText", Color.BLACK);

JFrame frame = new JFrame();

JCheckBox b = new JCheckBox("Hallo");
b.setEnabled(false);
frame.add(b);

frame.pack();
frame.setVisible(true);
```

Edit: Wichtig ist, dass du es am Anfang aufrufst.


----------



## Christoph74 (7. Mrz 2019)

da war auch noch ein fetter Fehler bei mir drin (Zwischenablage hat nicht funktioniert)...
habs dann nochmal gemacht (disabledText, anstatt disabledForeground):


```
UIManager.put("CheckBox.disabledText", Color.BLACK);       
       
        initComponents();

UIManager.put("CheckBox.disabledText", Color.BLACK);
```

=> leider immer noch kein Erfolg... => muss wohl irgendwie am Netbeans liegen....


----------



## Robat (7. Mrz 2019)

Glaub ich kaum. Schreibst du die GUI selber oder nutzt du den GUI-Builder (oder wie auch immer das Ding bei Netbeans heißt) ?
Zeig mal den ganzen Code (aber unwichtige Komponenten bitte rauslassen)


----------



## Christoph74 (7. Mrz 2019)

Hallo,

ich nehm den GUI-Builder von Netbeans (ist an für sich ja ne feine Sache, wenn man viele Komponenten hat).

Code ist schwierig -> sind 1219 Zeilen und das Wichtige raus picken kaum machbar...

Netbeans GUI-Builder generiert:

```
jCKB_Kommstoerung.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        jCKB_Kommstoerung.setText("<html>Stör. Kommunik.</html>");
        jCKB_Kommstoerung.setToolTipText("<HTML>Es besteht eine Kommunikationsstörung zur Anlage<BR>\nu.a. kritisch für Direktversorgungen\n</HTML>");
        jCKB_Kommstoerung.setEnabled(false);
        jPN_Stoerung_LSA.add(jCKB_Kommstoerung);
        jCKB_Kommstoerung.setBounds(5, 105, 120, 15);
```

Frag mich gerade, ob man aus der CheckBox nicht ein/das Label raus picken muss und dort die Farbe entsprechend setzen... -> nur wenn ja, wie?


----------



## Robat (7. Mrz 2019)

An sich musst du die UIManager Zeile nur in der main Methode als erstes aufrufen. 
Um mehr zu sagen müsste ich mir mal so ein Konstrukt anschauen was der GUI Builder da fabriziert.


----------



## mihe7 (7. Mrz 2019)

```
import java.awt.Color;
import java.awt.event.ItemEvent;
import javax.swing.*;

public class Test {
    private Color textColor;

    private void changeUI(JComponent comp, boolean change) {
        if (change) {
            textColor = (Color) UIManager.get("CheckBox.disabledText");
        }
        UIManager.put("CheckBox.disabledText", change ? Color.BLACK : textColor);
        JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(comp);
        SwingUtilities.updateComponentTreeUI(frame);
        frame.pack();
    }

    public void run() {
        Box box = Box.createVerticalBox();
        JCheckBox activate = new JCheckBox("Deaktiviert");
        JCheckBox black = new JCheckBox("Schwarz");
        black.addItemListener(e -> changeUI(black, e.getStateChange() == ItemEvent.SELECTED));
        JCheckBox cb = new JCheckBox("Text mit Checkbox");
        activate.addItemListener(e -> cb.setEnabled(e.getStateChange() == ItemEvent.DESELECTED));
        box.add(activate);
        box.add(black);
        box.add(cb);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(box);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }
}
```


----------



## Neumi5694 (19. Mrz 2019)

Mal als blöde Frage ... was für ein Look&Feel verwendest du?
Es ist ja nicht gesagt, dass die Eigenschaft "CheckBox.disabledText" von deinem Look&Feel überhaupt verwendet wird.


----------

