ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
1303
1303
EMPFEHLEN
-
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
-
Hi,
implementiere
Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
in Deinem Renderer. Den Vergleichswert kannst Du Dir einfach auslesen lassen, alle notwendigen Referenzen und Werte stehen ja zur Verfügung.
-
Hallo,
danke für die schnelle Antwort. Doch ein generelles Problem bleibt. Ich rufe den Renderer von einer Spalte mit 4 Einträgen aus auf (da nur in dieser Spalte eine Färbung vorgenommen werden soll).
In der Funktion, die Du mir genannt hast umfasst der Wert value dann auch alle 4 Einträge auf einmal. Wenn ich einen Vergleich mache, werden alle vier Zahlen mit dem ersten Eintrag der Vergleichsspalte verglichen, anschließend alle 4 Werte mit dem zweiten Eintrag der Vergleichsspalte usw.
Gibt es keine Möglichkeit, dass ich in value nur einen Wert habe und nicht die gesamte Spalte?
Danke schonmal.
Katrin
-
Das ist nicht richtig. value beinhaltet den Wert bzw das Objekt, was in der Zelle mit row, column steht. Im Grunde ist value an der Stelle das ausgelesene getValueAt(row, column).
Zitat von stookie
Deshalb kannst Du ja auch über table.getModel().getValueAt(row-1, column) den Vergleichswert holen.
S.o.Gibt es keine Möglichkeit, dass ich in value nur einen Wert habe und nicht die gesamte Spalte?
Danke schonmal.
Katrin
-
Hi,
hab es endlich geschafft. Manchmal denke ich einfach viel zu kompliziert.
Vielen Dank!
Ähnliche Themen
-
SQL Vergleich zweier Tabellen
Von LordDarkness im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 11.07.10, 12:39 -
Vergleich zweier Dateien
Von RaketenPeter im Forum JavaAntworten: 10Letzter Beitrag: 16.05.08, 16:22 -
[C] Vergleich zweier SQL-Tabellen
Von Buba235 im Forum C/C++Antworten: 5Letzter Beitrag: 12.07.06, 12:02 -
Vergleich zweier Quellen
Von M-GT im Forum PHPAntworten: 4Letzter Beitrag: 10.04.06, 16:12 -
JTable mit eigenen Cellrenderer oder so ähnlich
Von Zhoragh im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 5Letzter Beitrag: 29.05.05, 20:25





Zitieren
Login





