JCheckBox disabled text color

Christoph74

Bekanntes Mitglied
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
 
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:
 [/B]
UIManager.put("CheckBox.disabledForeground", Color.BLACK);       
       
        initComponents();

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

Grüße
Christoph
 
Kann ich nicht nachvollziehen. Das hier funktioniert wunderbar:
Java:
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.
 
da war auch noch ein fetter Fehler bei mir drin (Zwischenablage hat nicht funktioniert)...
habs dann nochmal gemacht (disabledText, anstatt disabledForeground):

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

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

=> leider immer noch kein Erfolg... => muss wohl irgendwie am Netbeans liegen....
 
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)
 
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:
Java:
        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?
 
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.
 
Java:
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());
    }
}
 
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.
 

Zurück
Oben