tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
306
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Shidan Shidan ist offline Mitglied
    Registriert seit
    Jun 2011
    Beiträge
    17
    Hallöchen,

    Immer dieses JTable.
    Also meine Frage bezieht sich darauf das ich eine Tabelle mit Namen und z.B Akitivtäten besitzte.
    Diese ist auch soweit es geht funktionierend fertig nur soll ich jetzt. Spezielle Zeilen Einfärben.
    Damit meine ich z.B

    Meier
    Meier
    Gerd
    Gerd

    Juergen
    Meier

    Das sich halt jeder Name ( auch die neu hinzugefügt werden) einfärbt um eine bessere Übersicht zu erhalten.
    Ich weiß zwar wie ich Tabellen einfärbe habe auch schon eine ColoredTableCellRenderer Class.
    Doch weiß ich wirklich 0 wie ich das anstellen soll.
    (Die Namen sollen ihre Farbe wieder ändern wenn sie sich sortieren damit es einheitlich ist)
    Dazu das Problem ist das die ersten beiden Spalten der Tabelle ComboBoxen sind und ich diese nicht über den Renderer färben kann(bzw nicht weiß wie)


    Für etwas mehr verständniss Ungefähr so:
    http://i55.tinypic.com/2zdxg0w.jpg

    Das ist jetzt nur so dahin geklatscht, da sich die comboboxen leider nicht mitfärben.


    Mit freundlichen Grüßen
    Shidan
    Geändert von Shidan (24.06.11 um 13:07 Uhr)
     

  2. #2
    SE Tutorials.de Gastzugang
    Erstmal herzlich willkommen im Tutorials.de-Forum

    Hui ... das klingt kompliziert.
    Dein Beispiel oben mit GRAU ist vielleicht nicht ganz so gut gewählt da man sich auf dem weißen Untergrund sehr anstrengen muss um es überhaupt zu sehen. Ändere es am besten in grün oder rot ... das hebt sich schön ab.
    Was dann die JTable angeht : willst du immer die Einträge in der selben Farbe haben die gleich sind oder hast du ein bestimmtes Muster *z.B. abwechselnd weis und farbig* ?

    Du hast uns ein bisschen wenig Infos gegeben um daraus ableiten zu können was genau du vorhast. Weil so wie du es beschrieben hast bleiben noch einige Möglichkeiten offen.
     

  3. #3
    Shidan Shidan ist offline Mitglied
    Registriert seit
    Jun 2011
    Beiträge
    17
    Die Farbe habe ich geändert.
    Das Muster soll sich im sortierten Modus dann jeweils immer so erstecken:

    Weiß
    Grau
    Weiß
    Grau

    Dabei wechselt die Farbe immer wenn ein neuer Name auftaucht
    Gleiche Namen sollen natürlich immer die gleiche Farbe besitzen.
    Es würde schon ersteinmal das soweit hinzubekommen da zuviel Arbeit nur überfordert und man ja immer weiter ausbauen kann wann man Lust hat.
    Geändert von Shidan (24.06.11 um 12:56 Uhr)
     

  4. #4
    Shidan Shidan ist offline Mitglied
    Registriert seit
    Jun 2011
    Beiträge
    17
    Push ?
    Ich habe hier mal ein wenig rumgebastelt und bin jetzt an das Ergebnis gekommen:
    http://i56.tinypic.com/10xvs0m.jpg

    Ich wollte das aber halt so wie im ersten Bild.
    Jemand eine Idee wo der Fehler liegt ?
    Hier mein ColorRender :


    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
        public class CustomTableCellRenderer  extends
            DefaultTableCellRenderer {          
     
            private static final long serialVersionUID = 1L;        
              private Color colorSelected = new Color(94, 129, 188 );
              private Color colorFocus = new Color( 94, 129, 188 );
              private Color colorNormal =Color.WHITE;
              
              public Component getTableCellRendererComponent (JTable table, 
              Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
                  super.getTableCellRendererComponent(
                   table, obj, isSelected, hasFocus, row, column);          
     
     
                    setForeground(Color.black);             
                    
                    if( isSelected ){
                        setBackground( colorSelected );
                        setForeground(Color.white); 
                    }              
                    else{
                        setBackground(Color.WHITE);
                        if(row > 0){
                            if(table.getValueAt(row-1, 0).equals(table.getValueAt(row,0))){                             
                                if(getBackground().equals(Color.WHITE)){                                
                                    setBackground(Color.LIGHT_GRAY);
                                }else if (getBackground().equals(Color.LIGHT_GRAY)){
                                    setBackground(Color.WHITE);
                                }
                            }
                            
                        }else{
                            setBackground(Color.WHITE);
                        }
                    }   
                    
                 return this;
              }
        }
    Geändert von Shidan (28.06.11 um 11:46 Uhr)
     

  5. #5
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    also wenn ich es richtig verstanden habe möchtest du, dass eine Zeile genau so wie die Zeile drüber eingefärbt wird, wenn der Wert der ersten Spalte gleich ist (gleicher Name), sonst wird die Farbe gewechselt. Ist das so korrekt?

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
        public class CustomTableCellRenderer  extends
            DefaultTableCellRenderer {          
     
            private static final long serialVersionUID = 1L;        
              private Color colorSelected = new Color(94, 129, 188 );
              private Color colorFocus = new Color( 94, 129, 188 );
              private Color colorNormal =Color.WHITE;
              
              public Component getTableCellRendererComponent (JTable table, 
              Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
                  super.getTableCellRendererComponent(
                   table, obj, isSelected, hasFocus, row, column);          
     
     
                    setForeground(Color.black);             
                    
                    if( isSelected ){
                        setBackground( colorSelected );
                        setForeground(Color.white); 
                    }              
                    else{
                        if(row > 0){
                            if(!table.getValueAt(row-1, 0).equals(table.getValueAt(row,0))){                             
                                if(getBackground().equals(Color.WHITE)){                                
                                    setBackground(Color.LIGHT_GRAY);
                                }else if (getBackground().equals(Color.LIGHT_GRAY)){
                                    setBackground(Color.WHITE);
                                }
                            }
                            
                        }else{
                            setBackground(Color.WHITE);
                        }
                    }   
                    
                 return this;
              }

    Getestet hab ich es jetzt nicht, könnte so aber passen.

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  6. #6
    Shidan Shidan ist offline Mitglied
    Registriert seit
    Jun 2011
    Beiträge
    17
    Zitat Zitat von Sascha Schirra Beitrag anzeigen
    Hallo,

    also wenn ich es richtig verstanden habe möchtest du, dass eine Zeile genau so wie die Zeile drüber eingefärbt wird, wenn der Wert der ersten Spalte gleich ist (gleicher Name), sonst wird die Farbe gewechselt. Ist das so korrekt?

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
        public class CustomTableCellRenderer  extends
            DefaultTableCellRenderer {          
     
            private static final long serialVersionUID = 1L;        
              private Color colorSelected = new Color(94, 129, 188 );
              private Color colorFocus = new Color( 94, 129, 188 );
              private Color colorNormal =Color.WHITE;
              
              public Component getTableCellRendererComponent (JTable table, 
              Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
                  super.getTableCellRendererComponent(
                   table, obj, isSelected, hasFocus, row, column);          
     
     
                    setForeground(Color.black);             
                    
                    if( isSelected ){
                        setBackground( colorSelected );
                        setForeground(Color.white); 
                    }              
                    else{
                        if(row > 0){
                            if(!table.getValueAt(row-1, 0).equals(table.getValueAt(row,0))){                             
                                if(getBackground().equals(Color.WHITE)){                                
                                    setBackground(Color.LIGHT_GRAY);
                                }else if (getBackground().equals(Color.LIGHT_GRAY)){
                                    setBackground(Color.WHITE);
                                }
                            }
                            
                        }else{
                            setBackground(Color.WHITE);
                        }
                    }   
                    
                 return this;
              }

    Getestet hab ich es jetzt nicht, könnte so aber passen.

    Gruß

    Sascha
    Richtig verstanden hast du es ja & Danke für die Antwort ,
    leider sieht diese zwar sehr schön aus ,funktioniert aber nicht wie gewollt
    Er färbt alle Einträge direkt Selectiert vor (Blau) (Ich denke mal weil vorher garkeine Farbe gewählt wird).
    Dazu färbt er nicht jede Column sondern nur die erste und dann jede zweite.
    Die Farbe wechselt zwar beim Namen aber die Einträge dannach färben sich wieder weiß.


    Die Farbe soll sich ändern sobald der Name sich verändert und solange diese Farbe beibehalten bis der Name sich wieder ändern dann wieder zurück zu der Orginalen Farbe. Damit der überblick über die Namen leichter wird.
    Geändert von Shidan (28.06.11 um 12:31 Uhr)
     

  7. #7
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Oh hab die Selektion übersehen. Schaue gleich nochmal wenn ich am Rechner bin.

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  8. #8
    Shidan Shidan ist offline Mitglied
    Registriert seit
    Jun 2011
    Beiträge
    17
    Okay ich habe das Problem jetzt folgendermaßen gelöst:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    
    import java.awt.Color;
    import java.awt.Component;
     
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
     
        /**
         * ColoredTableRender um die Tabelle einzufärben.
         */
        public class CustomTableCellRenderer  extends
            DefaultTableCellRenderer {          
     
            private static final long serialVersionUID = 1L;        
              private Color colorSelected = new Color(94, 129, 188 );
        //    private Color colorFocus = new Color( 94, 129, 188 );
              private Color colorNormal =Color.WHITE;
              private Color lightgray = new Color(210,210,210);
              boolean isWhite;
            
     
            public Component getTableCellRendererComponent (JTable table, 
              Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
                  super.getTableCellRendererComponent(
                   table, obj, isSelected, hasFocus, row, column);  
                    setForeground(Color.black);
     
                    if(column == 0 && row == 0){
                        isWhite = true;
                    }
                    if(isWhite){
                        setBackground(colorNormal);
                    }else if(!isWhite){
                        setBackground(lightgray);
                    }        
                    if( isSelected){            
                        setBackground(colorSelected);
                        setForeground(colorNormal); 
                    }
         
                    else{  
                        if(column == 0){
                            if(row > 0){                        
                               if(!table.getValueAt(row, 0).equals(table.getValueAt(row-1, 0))){
                                  if(isWhite){
                                      setBackground(lightgray);                         
                                      isWhite = false;
                                  }else{
                                
                                      setBackground(colorNormal);
                                      isWhite = true;
                                  }
                               }
                            }
                        }                
                    }  
                 return this;
              }
        }

    Es sieht ganz gut aus solange ich nichts mache. Scrolle ich aber mit dem Table oder Klicke auf Zeilen springen die Farben nur so umher. Weiß jemand woran das liegt ?
     

Ähnliche Themen

  1. JTable Zeilen einfärben
    Von nusm2000 im Forum Java
    Antworten: 2
    Letzter Beitrag: 06.04.11, 14:41
  2. JTable Zeilen einfärben nach Bedingung
    Von eraser666 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 11.11.10, 10:18
  3. JTable einfärben bei Änderung
    Von salzkrebs im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 15
    Letzter Beitrag: 25.08.09, 13:04
  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