Christian: DefaultTableCellRenderer

Hallo!

Ich habe eine Tabelle, in dieser soll die erste Hälfte der Zeilen in einer Farbe dargestellt werden, die andere in einer anderen Farbe.

Ich habe dafür folgende Klasse geschrieben

//============
class ColoredTableCellRenderer extends DefaultTableCellRenderer
{
  public void setValue( Object value )
  {
           setBackground( Color.blue );
           setText(String.valueOf(value));
  }
}
//============

Diese habe ich als DefaultRenderer meiner Tabelle zugewiesen

//============
DefaultTableCellRenderer ren = new ColoredTableCellRenderer();
Ausgabe.setDefaultRenderer(ColoredTableCellRenderer.class,ren);
//============

Soweit ist es in meinem Buch beschrieben. Die Ausgabe in der Tabelle hat aber immer noch die alte Farbe. Muß ich vielleicht irgendwie noch die Methode "setValue" verwenden? Aber wie und wo?

Kann mir vielleicht jemand ein einfaches Beispiel geben, wie man eine Tabelle mit farbigem Hintergrund ausgibt?

Danke!!

  1. Hallo,

    Ich habe eine Tabelle, in dieser soll die erste Hälfte der Zeilen in einer Farbe dargestellt werden, die andere in einer anderen Farbe.

    Ich habe dafür folgende Klasse geschrieben

    //============
    class ColoredTableCellRenderer extends DefaultTableCellRenderer
    {

    //Hier fehlt der Constructor
         public ColoredTableCellRenderer() { super(); }

    public void setValue( Object value )
      {
               setBackground( Color.blue );
               setText(String.valueOf(value));
      }
    }
    //============

    Diese habe ich als DefaultRenderer meiner Tabelle zugewiesen

    //============
    DefaultTableCellRenderer ren = new ColoredTableCellRenderer();
    Ausgabe.setDefaultRenderer(ColoredTableCellRenderer.class,ren);

    ^Hiermit setzt Du den DefaultTableCellRenderer für alle Zellen der Tabelle Ausgabe, welche Daten vom Typ ColoredTableCellRenderer enthalten. Ergo wahrscheinlich für keine.

    //============

    Soweit ist es in meinem Buch beschrieben. Die Ausgabe in der Tabelle hat aber immer noch die alte Farbe. Muß ich vielleicht irgendwie noch die Methode "setValue" verwenden? Aber wie und wo?

    Kann mir vielleicht jemand ein einfaches Beispiel geben, wie man eine Tabelle mit farbigem Hintergrund ausgibt?

    http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

    viele Grüße

    Axel

    1. Hallo Axel,

      public ColoredTableCellRenderer() { super(); }

      Diese Konstruktor existiert automatisch, wenn kein anderer angegeben wurde.

      Grüße

      Daniel

      1. Hallo Daniel,

        public ColoredTableCellRenderer() { super(); }
        Diese Konstruktor existiert automatisch, wenn kein anderer angegeben wurde.

        Ja, jetzt wo Du es schreibst, sehe ich es auch ;-))

        Allerdings ist es für mich trotzdem ein Fehler, wenn so etwas in einem Buch für Beginner angeboten wird. Es sei denn, es wäre dort irgendwo ausführlich erläutert. Der eigentliche Fehler im Ausgabgsposting ist es natürlich nicht. Der ist im Setzen des DefaultRenderers zu suchen.

        viele Grüße

        Axel