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!!
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
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;
}
}