Hallo zusammen,
ich habe ein JTable, bei dem ich zwei benachbarte Zeilen mit float-Werten vergleichen möchte. Wenn der Wert der 2. Spalte größer ist als der in der 1. Spalte, soll der Wert der 2. Spalte rot eingefärbt werden. (Die erste Spalte wird niemals gefärbt).
Habe daraufhin einen eigenen CellRenderer abgeleitet aus dem DefaultCellRenderer geschrieben, der mir aber alle Werte rot einfärbt.
public class VergleichRenderer extends DefaultTableCellRenderer
{
public void setValue(Object value)
{
String s = value.toString();
float ref = Float.parseFloat(s);
for (int i = 0; i < tableModel.getRowCount(); i++)
{
ref = ((Float)tableModel.getValueAt(i,2)).floatValue();
float wert = ((Float)tableModel.getValueAt(i,1)).floatValue();
if (ref > wert)
{
setForeground (Color.red);
System.out.println("true\t: "+ref+"\t"+wert);
}
else
{
setForeground (Color.black);
System.out.println("false\t: "+Float.parseFloat(s)+"\t"+wert);
}
setText (s);
}
}
}
Mein Problem ist auf jeden Fall, dass value mir die gesamte Spalte zurückgibt, ich aber Einzelwerte vergleichen muss. Daher die for-Schleife, in der die Variable ref überschrieben wird.
Mir kommt mein Werk sehr konfus vor und ich bitte um logischere Anregungen. Vielen Dank
Katrin
ich habe ein JTable, bei dem ich zwei benachbarte Zeilen mit float-Werten vergleichen möchte. Wenn der Wert der 2. Spalte größer ist als der in der 1. Spalte, soll der Wert der 2. Spalte rot eingefärbt werden. (Die erste Spalte wird niemals gefärbt).
Habe daraufhin einen eigenen CellRenderer abgeleitet aus dem DefaultCellRenderer geschrieben, der mir aber alle Werte rot einfärbt.
public class VergleichRenderer extends DefaultTableCellRenderer
{
public void setValue(Object value)
{
String s = value.toString();
float ref = Float.parseFloat(s);
for (int i = 0; i < tableModel.getRowCount(); i++)
{
ref = ((Float)tableModel.getValueAt(i,2)).floatValue();
float wert = ((Float)tableModel.getValueAt(i,1)).floatValue();
if (ref > wert)
{
setForeground (Color.red);
System.out.println("true\t: "+ref+"\t"+wert);
}
else
{
setForeground (Color.black);
System.out.println("false\t: "+Float.parseFloat(s)+"\t"+wert);
}
setText (s);
}
}
}
Mein Problem ist auf jeden Fall, dass value mir die gesamte Spalte zurückgibt, ich aber Einzelwerte vergleichen muss. Daher die for-Schleife, in der die Variable ref überschrieben wird.
Mir kommt mein Werk sehr konfus vor und ich bitte um logischere Anregungen. Vielen Dank
Katrin