Integer, Double, etc mit getTableCellRendererComponent

Status
Nicht offen für weitere Antworten.

p3lotud0

Aktives Mitglied
Hallo,

bin immer noch sehr rege mit Tabellen beschäftigt. Mir fehlt - danke eurer Hilfe, eigentlich nur noch eine Kleinigkeit, damit ich so gut wie zufrieden bin.
Und zwar überschreibe ich zur Validierung von Eingaben in die Tabelle die Funktion getColumnClass in meiner DefaultTableModel-Klasse. Das Validieren funktioniert damit super!!

Code:
public Class getColumnClass(int columnIndex) {
        switch( columnIndex ){
           case 0: return Integer.class;
           case 1: return String.class;
           case 2: return String.class;
           case 3: return Double.class;
           case 4: return Double.class;
           default: return null;
        }

Jetzt benutze ich aber noch nebenbei einen TableCellRenderer (s.u., Bsp. stammt aus der FAQ) um die Spalten und Zeilen farbig erscheinen zu lassen.
Das funktioniert aber jetzt nur noch für die Columns, wo ich s.o. eine String-Klasse zurückgeben lasse.
Die Integer und Double Columns erfahren komplett keine Änderung.
Täusche ich mich oder müsste die unten überschriebene Funktion nicht auch diese Columns betreffen?
Und wenn nicht, wie kann man das denn realisieren?

Vielen Dank schon mal im Voraus :)

Code:
class Renderer extends JLabel implements TableCellRenderer{
   private Color colorSelected = new Color( 200, 255, 200 );
   private Color colorFocus = new Color( 255, 200, 200 );
   private Color colorNormal = new Color( 200, 200, 255 );

   public Renderer(){
      setOpaque( true );
   }
   
   public Component getTableCellRendererComponent(JTable table, Object value,
         boolean isSelected, boolean hasFocus, int row, int column) {
      
      // die normalen Farben
      setForeground( Color.BLACK );
      if( hasFocus )
         setBackground( colorFocus );
      else if( isSelected )
         setBackground( colorSelected );
      else
         setBackground( colorNormal );
      
      setText( null );
      setIcon( null );
      
      if( value instanceof Date )
         setText( ((Date)value).toGMTString() );
      else if( value instanceof Icon )
         setIcon( (Icon)value );
      else if( value instanceof Color ){
         Color color = (Color)value;
         setForeground( color );
         setText( color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() );
      }
      else if( value instanceof Boolean ){
         if( ((Boolean)value).booleanValue() )
            setText( "yes" );
         else
            setText( "no" );
      }
      else
         setText( value.toString() );
      
      return this;
   }
}
 

p3lotud0

Aktives Mitglied
Hi, vielen Dank. Muss nur noch gucken, wie ich jetzt die Abfragen mache bzw. ob selected ist oder nicht und dann entsprechend einfärben. Die überschriebene Methode im TableCellRenderer kann ich mir ja dann schicken, denn die hat ja dann keinen Einfluss mehr aufs Ergebnis. Sehe ich das richtig? Die Überprüfung findet jetzt nur noch in der prepareRenderer-Methode statt.

Code:
public Component prepareRenderer(
			MeinTableRenderer renderer, int row, int column) {
        	Component c = super.prepareRenderer(renderer, row, column);
        	return c;
    }
Meine TableRenderer-Klasse ist dann überflüssig, weil ohne Wirkung?!?
 

André Uhres

Top Contributor
Ein Renderer bezieht sich immer nur auf eine bestimmte Spalte oder Spaltenklasse.
"prepareRenderer" bereitet die Renderer vor, unabhängig von Spalte und Spaltenklasse.
Man kann natürlich zusätzlich noch eigene Renderer schreiben, muss aber nicht.

Btw: Ich weiss nicht warum du in deinem letzten Code "MeinTableRenderer" schreibst, das müsste eigentlich "TableCellRenderer" heissen.
 

p3lotud0

Aktives Mitglied
Danke für deine Hilfe und ja genau: Die MeineTableRenderer ist einfach nur eine überschriebene TableCellRenderer.
 
G

Guest

Gast
Ja, habe das auch nur gepostet, um zu zeigen, was ich versucht habe, aber wie es nicht funktioniert :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Double in der Tabelle statt String und Integer AWT, Swing, JavaFX & SWT 3
_user_q Wie den Inhalt vom Spinner auf Integer überprüfen? AWT, Swing, JavaFX & SWT 15
B TableCellRenderer rendert Integer/Boolean Felder nicht AWT, Swing, JavaFX & SWT 4
W Swing JTextField nur für Integer AWT, Swing, JavaFX & SWT 2
R Integer to KeyEvent AWT, Swing, JavaFX & SWT 2
C Integer in ein Textfield schreiben. AWT, Swing, JavaFX & SWT 4
MiMa Integer Zahl in Textfield ausgeben AWT, Swing, JavaFX & SWT 12
D JTextField soll nur Integer als Eingabewert annehmen AWT, Swing, JavaFX & SWT 5
H 2D-Grafik BufferedImage aus Integer-Array AWT, Swing, JavaFX & SWT 3
J Swing RowSorter für (negative) Integer / Floats - JTable AWT, Swing, JavaFX & SWT 5
jeppi Fonts: Schriftgrößen skalierbarer Fonts wirklich nur als integer möglich? AWT, Swing, JavaFX & SWT 5
C jtable hintegrundfarbe integer wert AWT, Swing, JavaFX & SWT 14
R JTable mit Column die Icon und Integer enthält? AWT, Swing, JavaFX & SWT 3
J Integer aus Textdatei auslesen und in Variable speichern AWT, Swing, JavaFX & SWT 11
G jButton Text zu Integer umwandeln // jLabel mit Counter auf AWT, Swing, JavaFX & SWT 16
A nur Integer in JTextField AWT, Swing, JavaFX & SWT 5
G Integer in JTextField eingeben AWT, Swing, JavaFX & SWT 3
CptK Point2D.Double Kurven - Beschriftung und richtiges Anklicken AWT, Swing, JavaFX & SWT 7
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
B AWT GUI nimmt nur 19 Ziffern an, obwohl Max Wert von Double größer ist AWT, Swing, JavaFX & SWT 7
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
S Polygon mit double-Koordinaten AWT, Swing, JavaFX & SWT 2
N Double Buffern von BILDERN AWT, Swing, JavaFX & SWT 6
V Applet Double Buffering AWT, Swing, JavaFX & SWT 2
B Graphics2d drawString mit double Werten? AWT, Swing, JavaFX & SWT 5
O 2D-Grafik Rectangle mit double Werten zeichnen AWT, Swing, JavaFX & SWT 3
T 2D-Grafik Double Buffering AWT, Swing, JavaFX & SWT 7
lumo SWT Double Buffering AWT, Swing, JavaFX & SWT 5
M Object[][] in double[][] casten AWT, Swing, JavaFX & SWT 6
A aus einem Textfeld in double parsen AWT, Swing, JavaFX & SWT 10
K Flackern trotz Double-Buffering AWT, Swing, JavaFX & SWT 10
J JSlider mit Double Werten AWT, Swing, JavaFX & SWT 5
T JTextField nur Double werte eingeben AWT, Swing, JavaFX & SWT 2
A Explicit casting Point2D.Double AWT, Swing, JavaFX & SWT 3
A TableRowSorter für double Werte mit Formatierung AWT, Swing, JavaFX & SWT 3
iLoveTheInternet AWT Rectangle2D.Double intersecs AWT, Swing, JavaFX & SWT 6
hdi Wie implementiere ich Double Buffering AWT, Swing, JavaFX & SWT 12
R drawString mit double Koordinaten AWT, Swing, JavaFX & SWT 5
L JTextField Umwandeln in double-Werte AWT, Swing, JavaFX & SWT 5
K double / int einlesen? AWT, Swing, JavaFX & SWT 12
G Frage zu Double Buffering AWT, Swing, JavaFX & SWT 4
L double in JTable formatieren AWT, Swing, JavaFX & SWT 7
P Double-Werte sortieren mit TableRowSorter AWT, Swing, JavaFX & SWT 2
U Double Buffering AWT, Swing, JavaFX & SWT 6
B JFormattedTextField mit DecimalFormat in ein Double AWT, Swing, JavaFX & SWT 11
J Double-Buffering zu langsam AWT, Swing, JavaFX & SWT 4
S double in String umwandeln AWT, Swing, JavaFX & SWT 6
L Double-Buffering AWT, Swing, JavaFX & SWT 2
Student "Dicke" einer Linie - Line2D.Double AWT, Swing, JavaFX & SWT 12
G Double-Click f. alle Komps UNIX u. WIN verschieden ? AWT, Swing, JavaFX & SWT 5
D double Buffering abschalten? AWT, Swing, JavaFX & SWT 4
G Ellipse2D.Double funktioniert nicht AWT, Swing, JavaFX & SWT 3
W SWT - Tree: Problem mit Double-Click expand AWT, Swing, JavaFX & SWT 5
L Double Buffering bei JTable AWT, Swing, JavaFX & SWT 4
kodela Swing Problem mit getTableCellRendererComponent() AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben