Rabenherz
Mitglied
Moin
Ich weis das Problem wurde hier schon sehr oft diskutiert aber trotzdem hab ich beim suchen keine Lösung für mein Problem gefunden.
Also: Ich will Zellen einer Tabelle einzel einfärben (weis, grau, rot oder blau). Ich hab mir also einen ColoredTableCellRenderer als Vererbung des DefaultTableCellRenderer gebaut...der sieht folgendermaßen aus:
Der wird auch der bettrefenden Spalte passen zugefügt:
Allerdings sind die Zellen selbst beim aufrufen der Gui alle weis...obwohl (Debugmode getestet) beim aufruf von getTableCellRendererComponent grau als Farbe korrekt gesetzt wird.
Hat irgendjemand ne Idee wo der Fehler liegt, bzw. brauch noch mehr Infos?
Bin leider mit JTables noch nicht wirklich versiert.
Danke schonmal im Vorraus
Ich weis das Problem wurde hier schon sehr oft diskutiert aber trotzdem hab ich beim suchen keine Lösung für mein Problem gefunden.
Also: Ich will Zellen einer Tabelle einzel einfärben (weis, grau, rot oder blau). Ich hab mir also einen ColoredTableCellRenderer als Vererbung des DefaultTableCellRenderer gebaut...der sieht folgendermaßen aus:
Code:
package gui;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class ColoredTableCellRenderer extends DefaultTableCellRenderer {
//----------------------------------------------
//### Attributes ###
//----------------------------------------------
protected String[] cellColor = new String[16];
//----------------------------------------------
//### Constructors ###
//----------------------------------------------
//-----------------------------
//getTableCellRendererComponent
//-----------------------------
public ColoredTableCellRenderer() {
for (int i = 1; i<16; i++){
cellColor[i] = "gray";
}
}
//----------------------------------------------
//### Methods ###
//----------------------------------------------
//-----------------------------
//getTableCellRendererComponent
//-----------------------------
@Override
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
String cellContent = (String) value;
JLabel label = new JLabel(cellContent);
String thisCellColor = cellColor[row];
if (thisCellColor.equals("white")){
label.setBackground(Color.WHITE);
} else {
if (thisCellColor.equals("gray")){
label.setBackground(Color.LIGHT_GRAY);
} else {
if (thisCellColor.equals("red")){
label.setBackground(Color.RED);
} else {
if (thisCellColor.equals("blue")){
label.setBackground(Color.BLUE);
} else {
label.setBackground(Color.GRAY);
}}}}
return label;
}//getTableCellRendererComponent
}//ColoredTableCellRenderer
Der wird auch der bettrefenden Spalte passen zugefügt:
Code:
[...]
private DefaultTableModel dtm;
priavat JTable register;
private ColoredTableCellRenderer cellRenderer;
[...]
dtm = new DefaultTableModel(rowData,new String[2]){
public boolean isCellEditable(int rowIndex, int columnIndex){
return false;
}
};
register = new JTable(dtm);
cellRenderer = new ColoredTableCellRenderer();
register.getColumnModel().getColumn(1).setCellRenderer(cellRenderer);
Allerdings sind die Zellen selbst beim aufrufen der Gui alle weis...obwohl (Debugmode getestet) beim aufruf von getTableCellRendererComponent grau als Farbe korrekt gesetzt wird.
Hat irgendjemand ne Idee wo der Fehler liegt, bzw. brauch noch mehr Infos?
Bin leider mit JTables noch nicht wirklich versiert.
Danke schonmal im Vorraus