tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1303
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    stookie stookie ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    17
    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
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    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.
     

  3. #3
    stookie stookie ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    17
    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
     

  4. #4
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Zitat Zitat von stookie
    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.
    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).
    Deshalb kannst Du ja auch über table.getModel().getValueAt(row-1, column) den Vergleichswert holen.

    Gibt es keine Möglichkeit, dass ich in value nur einen Wert habe und nicht die gesamte Spalte?

    Danke schonmal.

    Katrin
    S.o.
     

  5. #5
    stookie stookie ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    17
    Hi,

    hab es endlich geschafft. Manchmal denke ich einfach viel zu kompliziert.
    Vielen Dank!
     

Ähnliche Themen

  1. SQL Vergleich zweier Tabellen
    Von LordDarkness im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 11.07.10, 12:39
  2. Vergleich zweier Dateien
    Von RaketenPeter im Forum Java
    Antworten: 10
    Letzter Beitrag: 16.05.08, 16:22
  3. [C] Vergleich zweier SQL-Tabellen
    Von Buba235 im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 12.07.06, 12:02
  4. Vergleich zweier Quellen
    Von M-GT im Forum PHP
    Antworten: 4
    Letzter Beitrag: 10.04.06, 16:12
  5. JTable mit eigenen Cellrenderer oder so ähnlich
    Von Zhoragh im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 29.05.05, 20:25