Hallo Leute,
ich weiß zu diesem Thema gibt es unglaublich viele Einträge, jedoch hab ich jetzt schon ziemlich viele durch und komme immer noch auf kein Ergebnis.
Nun zu meinem Problem:
Ich möchte die Schriftfarbe der Zellen meiner JTable je nach Text ändern. Hierfür habe ich folgenden Code verfasst:
Code :
Code
public class ScoreTableCellRender extends DefaultTableCellRenderer
{
private static final long serialVersionUID = 3503110144069061261L;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub
JLabel c = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
String s = value.toString();
if(s.equals("NB")){
c.setForeground(Color.GRAY);
c.setText((String) value);
}
else if(s.equals("NOK")){
c.setForeground(Color.ORANGE);
c.setText((String) value);
}
else if(s.equals("NNOK")){
c.setForeground(Color.RED);
c.setText((String) value);
}
else if(s.equals("OK")){
c.setForeground(Color.BLACK);
c.setText((String) value);
}
return c;
}
}
Alles anzeigen
Hier mein Modell:
Code
public class StatistikTabellenModell extends AbstractTableModel{
private static final long serialVersionUID = -2712404378541056977L;
private int ColumnCount = 1;
private int RowCount = 1;
private String[][] Values;
public StatistikTabellenModell(int c, int r)
{
ColumnCount = c;
RowCount = r + 1;
}
public int getColumnCount() {
// TODO Auto-generated method stub
return ColumnCount;
}
public int getRowCount() {
// TODO Auto-generated method stub
return RowCount;
}
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
if(Values != null)
return Values[rowIndex][columnIndex];
else
return " ";
}
public void setColumnCount(int i){
ColumnCount = i;
Values = new String[RowCount+1][ColumnCount];
}
public void setRowCount(int i){
RowCount = i;
Values = new String[RowCount+1][ColumnCount];
}
public void setValue(String[] d, String[][] a)
{
Values = new String[RowCount+1][ColumnCount];
for(int i = 0; i < d.length; i++)
Values[0][i] = d[i];
for(int i = 0; i < a.length; i++){
for (int j = 0; j < a[i].length; j++)
Values[i+1][j] = a[i][j];
}
}
}
Alles anzeigen
Und der Teil des Hauptprogramms der relavant ist:
Code
ScoreTableCellRender str = new ScoreTableCellRender();
TAnzeigeModell2.setValue(ColDate, Values2);
TAnzeige2.setDefaultRenderer(String.class, str);
Ich hoffe wirklich, dass ihr mir helfen könnt und bedanke mich schon mal im Vorraus.
lg
Morgaine