# Farbe bestimmen, wenn JTextField.setEnabled(false)



## Masterchief (19. Okt 2004)

Hallo,

ich habe folgendes Problem.

Ich möchte ein JTextField rein als Anzeige nutzen. Dafür setze ich "Enabled" auf false. 
Dabei haut's mir immer die Textfarbe von schwarz in grau. Mit setForeground ist da nix zu machen.

Wenn ich mit setEditable arbeite wirds schon besser, aber mit ein paar Mausklicks markiert es mir den Inhalt.
Allerdings wird bei der Methode die Schriftfarbe nicht gewechselt.

Da das Textfeld aber absolut unzugänglich sein soll, möchte ich setEnabled verwenden.
Also....?

Wer weiß, wie ich mit setEnabled(false) die Schriftfarbe schwarz lassen kann, bzw. sie neu setzen kann??

Oder sollte man das mit einer anderen Komponente umsetzen??

MfG Masterchief


----------



## L-ectron-X (19. Okt 2004)

Warum verwendest Du nicht einfach ein JLabel?
Wenn Du nur nicht änderbaren Text anzeigen möchtest, reicht ein JLabel völlig.


----------



## Sky (19. Okt 2004)

Guckst Du hier: JTextComponent#setDisabledTextColor


----------



## Masterchief (19. Okt 2004)

@ L-ectron-X: Ein Label habe ich auch schon genommen, aber da gefiel meinem Chef das Aussehen nicht. War ihm zu simpel.

@ sky80: Das habe ich gesucht. Funzt auch !  Danke, danke !  :applaus: 


Masterchief


----------



## Sky (19. Okt 2004)

Sowas findest Du immer ganz einfach in der API: Die Methoden-Namen sind meist so gewählt, dass Sie schon erklären, was sie tun.
Man muss sich das ganz nur ins deutsche übersetzen ;-)


----------



## Stinner (2. Sep 2009)

Hallo,
wie macht man dies bei einer JComboBox?
Diese ist ja keine JTextComponent.
Gruß


----------



## Ebenius (2. Sep 2009)

JComboBox macht das über einen CellRenderer. Also brauchst Du einen CellRenderer, der den Inhalt der Zelle nicht deaktiviert zeichnet. Am Einfachsten nimmt man dazu den Original-Renderer und baut sich einen eigenen, der auf diesen verweist und dessen Renderer-Komponente wieder aktiviert. In etwa: 
	
	
	
	





```
final ListCellRenderer orgRenderer = comboBox.getRenderer();
comboBox.setRenderer(new ListCellRenderer() {
  @Override
  public void getListCellRendererComponent(
        JList list,
        Object value,
        int index,
        boolean isSelected,
        boolean cellHasFocus) {
    final Component c = orgRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
    c.setEnabled(true);
    return c;
  }
});
```
Das Handle ist dann aber -- je nach Look and Feel -- weiterhin ausgegraut. Daran kann man (trivial) nichts ändern.

Ebenius


----------

