tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
700
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    eraser666 eraser666 ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    3
    Hallo,

    ich möchte Zeilen einer JTable unterschiedlich einfärben.

    Hierzu habe ich mehrere Links bereits gefunden und den Code entsprechend implementiert:
    http://www.tutorials.de/swing-java2d...infaerben.html

    Mein Code:
    PHP-Code:
    import java.awt.Color;
    import java.awt.Component;

    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;

    public class 
    LeadTableRenderer extends DefaultTableCellRenderer {

        
    /**
         * 
         */
        
    private static final long serialVersionUID = -7171382203765416074L;

        @
    Override
        
    public Component getTableCellRendererComponent(JTable tableObject value,
                
    boolean isSelectedboolean hasFocusint rowint column) {
            
            
    Component c super.getTableCellRendererComponent(table,
                    
    valueisSelectedhasFocusrowcolumn);
            
            if(
    column == 3) {
                if (
    value.equals("Kalt")) {
                    
    setBackground(Color.GREEN);
                } else if (
    value.equals("Warm")) {
                    
    setBackground(Color.YELLOW);
                } else if(
    value.equals("Heiß")) {
                    
    setBackground(Color.RED);
                }
            } 

            return 
    this;
        }

    Nun ist es so, dass beim Setzen der Werte das Setzen der Farben verschoben ist.
    Ich habe 7 Zeilen.
    Zeile 1: in Spalte 3 steht ""
    Zeile 2: in Spalte 3 steht "kalt"
    Zeile 3: in Spalte 3 steht "kalt"
    Zeile 4: in Spalte 3 steht ""
    Zeile 5: in Spalte 3 steht "kalt"
    Zeile 6: in Spalte 3 steht "warm"
    Zeile 7: in Spalte 3 steht "kalt"

    Eingefärbt werden die Zeilen mit (null bedeutet Standardhintergrund:
    Zeile 1: null
    Zeile 2: null
    Zeile 3: grün
    Zeile 4: grün
    Zeile 5: grün
    Zeile 6: grün
    Zeile 7: gelb

    Irgendwie setzt der beim Farbe setzen eine Zeile zu spät an.

    Weiß jemand warum das so ist und wie ich das beheben kann?


    VG
    Eraser
     

  2. #2
    eraser666 eraser666 ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    3
    Ich habe eine Lösung gefunden:
    http://www.java-forum.org/awt-swing-...lrenderer.html

    Hier noch kurz meine Lösung:
    Das Einfärben der Zeilen war deswegen um eine Zeile verschoben, weil ich mein Prüfkriterium in der letzten Spalte einer Zeile befand.
    Erst ab diesem Zeitpunkt, als der Wert gesetzt wurde, erkannte der Renderer, dass er die Felder anders einfärben muss.
    Somit habe ich die Spalte, die das Prüfkriterium für den Renderer enthält an den Zeilenanfang verschoben und meinen Renderer entsprechend angepasst (Details siehe Link).

    Somit habe ich in meinem eigenen Renderer folgendes gemacht:
    PHP-Code:
    import java.awt.Color;
    import javax.swing.table.DefaultTableCellRenderer;

    public class 
    LeadTableRenderer extends DefaultTableCellRenderer {

        
    /**
         * 
         */
        
    private static final long serialVersionUID = -7171382203765416074L;

        
    Color currentCol;
        
        @
    Override
        
    protected void setValue(Object value) {
            
    super.setValue(value);

            if (
    value.equals("Kalt")) {
                
    currentCol Color.GREEN;
            } else if (
    value.equals("Warm")) {
                
    currentCol Color.YELLOW;
            } else if (
    value.equals("Heiß")) {
                
    currentCol Color.RED;
            } else if (
    value.equals("unqualifiziert")){
                
    currentCol null;
            }

            
    setBackground(currentCol);
        }

     

Ähnliche Themen

  1. JTable einfärben bei Änderung
    Von salzkrebs im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 15
    Letzter Beitrag: 25.08.09, 13:04
  2. jTable Zeileneinfärben unter Bedingung
    Von Myar im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 08.09.08, 14:39
  3. Antworten: 2
    Letzter Beitrag: 10.11.06, 14:41
  4. JTable Zelle gezielt einfärben
    Von ProggYLouie im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 12.03.05, 17:43
  5. JPanel-Zeilen abwechselnd einfärben
    Von DealeyLama im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 21.02.05, 11:56

Stichworte