Swing JTable - Zeilentext unabhänig von einander einfärben

Satoru

Mitglied
Hallo, ich habe hier ein kleines Problem mit der JTable. Ich hab mir auch schon die Anleitung zur JTable hier durchgelesen, habe aber keinen Hinweis auf die Lösung meines Problems gefunden.

Ich möchte in meiner Tabelle einzelne Spalten einfärben, und zwar sollen pro Spalte nicht jedes Element die gleiche Farbe haben, sonder es soll entsprechend einem Eintrag in der selben Zeile einer anderen Spalte entsprechen:

-----------------
Name | bla | Zahl
-----------------
Tom |asd| 1
Kim |gsd| 2
Bob |ert| 1

In dem Beispiel hier soll also "Tom" und "Bob" die gleiche Farbe haben, weil deren Zahl gleich ist, usw..

Ich habe mir dafür einen Renderer gebaut, den ich dann auf die Spalte "Name" anwengen will. Aber ich verstehe nicht wie ich das genau implementieren kann:

Java:
        public class MyColorRenderer extends DefaultTableCellRenderer {
            public Component getTableCellRendererComponent(
              JTable table, Object value, boolean isSelected,
              boolean hasFocus, int row, int column) {

              Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
              Font font = c.getFont();
              c.setFont(font.deriveFont(Font.BOLD));

              //???

              return c;
          }
        }

Weis jemand wie das am besten geht?
 
du brauchst ein Konstrukt um die Farben zuzuordnen,
du könntest vorher fest vorgeben, welcher Wert zu welcher Farbe führt, ansonsten dynamisch wirds schwieriger,

in dem Renderer hast du die Zeile, fragst den zugehörigen Wert im Model ab und bestimmst so die Farbe
 
Zuletzt bearbeitet von einem Moderator:
Warum holst du dir den Wert aus Spalte 3 nicht einfach und fragst, ob dieser 1 ist oder nicht. Wenn 1, dann färben.


Code:
String value = table.getValueAt(row, 2).toString();

if (value.equals("1")){
  // fräbe rot
}else{
 // normale farbe
}
 
Soll die ganze Zeile eingefärbt werden?
Kann man nicht die Farbe bzw. den "Farbindex" direkt dem Objekt in der Zelle mitgeben, oder muss der tatsächlich in einer extra Spalte stehen?
 
der muss in einer extra Zeile stehen, aber so wie Meru es geschrieben hat, hat es wunderbar geklappt! Vielen Dank euch allen 🙂
 

Neue Themen


Zurück
Oben