C
Camino
Gast
Hallo,
ich versuche gerade, mit dem TableCellRenderer einige Zellen in meiner JTable farbig zu gestalten. Hab mir dazu das Beispiel hier aus der Java FAQ genommen. Das klappt auch ganz gut. Nur möchte ich jetzt in einer Spalte (z.B. Spalte 1) die Werte farbig markieren, wenn in einer anderen Spalte (z.B. Spalte 3) ein bestimmter Wert steht. Bisher schaffe ich es nur, dass in der selben Spalte auch die Farben gesetzt werden. In meinem Beispiel soll der Wert in der 1. Spalte orange hinterlegt werden, wenn in der 3. Spalte der Wert "A" steht. Wie kriege ich das hin? Hier kommt mal meine Klasse mit dem TableCellRenderer:
[HIGHLIGHT="Java"]import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class ColoredTableCellRenderer
extends JLabel implements TableCellRenderer
{
private Color colorSelected = new Color( 200, 255, 200 );
private Color colorFocus = new Color( 200, 255, 200 );
private Color colorNormal = new Color( 255, 255, 255 );
public ColoredTableCellRenderer(){
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 );
if ( column == 2 && value.equals("A"))
setBackground( Color.ORANGE );
setText( value.toString() );
return this;
}
}[/HIGHLIGHT]
ich versuche gerade, mit dem TableCellRenderer einige Zellen in meiner JTable farbig zu gestalten. Hab mir dazu das Beispiel hier aus der Java FAQ genommen. Das klappt auch ganz gut. Nur möchte ich jetzt in einer Spalte (z.B. Spalte 1) die Werte farbig markieren, wenn in einer anderen Spalte (z.B. Spalte 3) ein bestimmter Wert steht. Bisher schaffe ich es nur, dass in der selben Spalte auch die Farben gesetzt werden. In meinem Beispiel soll der Wert in der 1. Spalte orange hinterlegt werden, wenn in der 3. Spalte der Wert "A" steht. Wie kriege ich das hin? Hier kommt mal meine Klasse mit dem TableCellRenderer:
[HIGHLIGHT="Java"]import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class ColoredTableCellRenderer
extends JLabel implements TableCellRenderer
{
private Color colorSelected = new Color( 200, 255, 200 );
private Color colorFocus = new Color( 200, 255, 200 );
private Color colorNormal = new Color( 255, 255, 255 );
public ColoredTableCellRenderer(){
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 );
if ( column == 2 && value.equals("A"))
setBackground( Color.ORANGE );
setText( value.toString() );
return this;
}
}[/HIGHLIGHT]
Zuletzt bearbeitet von einem Moderator: