# JCheckbox, das selektieren verhindern



## Meru (11. Mrz 2008)

Hallo

Ich will meiner JCheckbox sagen, sie soll nicht verändert werden können, also man soll sie nicht selektieren bzw deselektieren. Dies erreicht man ja mit normalen JCheckBox.setEnabled(false);  . Das Problem welches ich aber habe ist die Art und Weise wie sie anschließend dargestellt wird, ausgegraut.
Mit setForground kann ich zumindest die Schriftfarbe auf schwarz ändern, aber das kästchen mit dem Häckchen drin ist weiterhin ausgegraut.

Gibt es eine Möglichkeit, die JCheckbox nicht direkt zu disablen, sondern nur das kleine Kästchen? Also das wenn man da raufklickt nix de-/selektiert wird?

Die JCheckbox soll dazu dienen um Informationen anzuzeigen ala:

- UserA hat eine email angegeben  <- und dies soll einfach mit einem Häckchen visualisiert werden.

Hoffe jemand kann mir da vielleicht einen rat geben 

--
Gruß

Robert


----------



## L-ectron-X (11. Mrz 2008)

Warum nimmst du nicht einfach ein JLabel und fügst eine Grafikdatei (Häkchen) hinzu, wenn der beschriebene Fall eintritt?


----------



## Meru (11. Mrz 2008)

Will dafür ungern eine feste Grafik vorschreiben. Vielmehr soll das Häckchenfeld so aussehen, wie das aktuelle Look&Feel ist. Nun könnte man sagen, ich mache für jedes L&F ne extra grafik, was jedoch bei einer großen Menge an L&F's einfach nicht möglich ist


----------



## SlaterB (11. Mrz 2008)

```
public class TestGUI
    extends JFrame
{

    public TestGUI()
    {
        JCheckBox checkBox = new JCheckBox("Test", true);

        DefaultButtonModel b = new DefaultButtonModel()
            {
                {
                    super.setSelected(true);
                }

                public void setSelected(boolean b)
                {
                }
            };
        checkBox.setModel(b);
        add(checkBox);
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args)
    {
        new TestGUI();
    }
}
```


----------



## Verjigorm (11. Mrz 2008)

Setz doch ne Glasspane drauf
wäre natürlich großer Aufwand 

The glassPane is always the first child of the rootPane and the rootPanes layout manager ensures that it's always as big as the rootPane. By default it's transparent and not visible. It can be used to temporarily grab all keyboard and mouse input by adding listeners and then making it visible. by default it's not visible.


----------



## Meru (11. Mrz 2008)

SlaterB hat gesagt.:
			
		

> ```
> public class TestGUI
> extends JFrame
> {
> ...



Supi, das funktioniert ja schon bestens 
Gibt es da vielleicht noch die Möglichkeit, die Klickanimation zu verhindern? Wobei das nicht so wichtig wäre 

Ich danke dir vielmals


@Glasspane:
Die Möglichkeit muss ich mir dann auch noch einmal bei Gelegenheit anschauen, thx für tip


----------



## SlaterB (11. Mrz 2008)

GlassPane klingt sauberer, einfacher und hilft bestimmt auch gegen die Klickanimation 
wenns geht, kenne ich nicht


----------



## Lenard (11. Mrz 2008)

Ich habe mich auch gerade dem Problem angenommen und dachte es so zu lösen:

checkBox.setDisabledIcon( new JCheckBox().getIcon() );

Aber irgendwie funktioniert das nicht.
Wisst ihr wieso?

Lenard


----------



## Verjigorm (11. Mrz 2008)

Ich hab mal nen paar Buttons mit einer Glasspane abgedeckt.
Aber je nach Komplexität der Gui brauchst du dann massig Itemlistener, was das ganze nicht grad übersichtlich macht, weil die Glasspane genauso groß ist wie das Rootpane auf dem es liegt


----------



## SlaterB (11. Mrz 2008)

@Lenard: 
die Icons sind standardmäßig alle null, 
wenn du es setzen willst, dann wohl mit einem externen beliebigen Icon

was standardmäißg gezeichnet wird kann ich nicht sagen,
hängt aber wohl auch von der UI usw. ab, die JCheckBox selber hat da initial wenig Einfluss


----------

