Hallo,
habe folgendes Problem.
Ich habe als UIManager Nimbus gesetzt, was für mich den Vorteil hat, dass in Tabellen die Hintergrundfarbe alterniert. Jetzt sollen die Einträge bei bestimmten Werten nicht angezeigt werden bzw. nicht lesbar sein. Dass habe ich so umgesetzt, dass er die Farbe des Textes in den Zellen auf die Farbe des Hintergrundes der Tabelle setzt. Das hat auch unter dem Standard-UIManager wunderbar funktioniert, nur leider bei Nimbus nicht, er setzt nämlich immer nur bei dem grauen Hintergrund bzw. wenn die Tabellenzeile markiert ist, den Text in der richtigen Farbe, beim weißen Hintergrund ist die Textfarbe schwarz.
Wo liegt mein Fehler?
Hier mein Quellcode:
Gruß
Frank
habe folgendes Problem.
Ich habe als UIManager Nimbus gesetzt, was für mich den Vorteil hat, dass in Tabellen die Hintergrundfarbe alterniert. Jetzt sollen die Einträge bei bestimmten Werten nicht angezeigt werden bzw. nicht lesbar sein. Dass habe ich so umgesetzt, dass er die Farbe des Textes in den Zellen auf die Farbe des Hintergrundes der Tabelle setzt. Das hat auch unter dem Standard-UIManager wunderbar funktioniert, nur leider bei Nimbus nicht, er setzt nämlich immer nur bei dem grauen Hintergrund bzw. wenn die Tabellenzeile markiert ist, den Text in der richtigen Farbe, beim weißen Hintergrund ist die Textfarbe schwarz.
Wo liegt mein Fehler?
Hier mein Quellcode:
Java:
import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
/**
*
* @author frank
*/
public class ZeugnisMSSCellRenderer extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column){
JLabel label = (JLabel) super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
if (column > 0){
if (value instanceof Float){
System.out.println(label.getBackground().toString());
if ((Float) value == -1) label.setForeground(label.getBackground());
else if ((Float) value < 4) label.setForeground(Color.red);
else label.setForeground(Color.black);
}
else {
if ((Integer) value == -1) label.setForeground(label.getBackground());
else if ((Integer) value < 4) label.setForeground(Color.red);
else label.setForeground(Color.black);
}
label.setHorizontalAlignment(CENTER);
}
else {
label.setHorizontalAlignment(LEFT);
label.setForeground(Color.black);
}
setValue(value);
return label;
}
}
Gruß
Frank