Farben:
selected
normal
focused
Spalten:
Boolean|Boolean|Integer|String|Integer|Integer|Double|Integer|Integer
alle Boolwerte werden als Checkbox dargestellt.
nun gehn die Probleme los. die Renderer die ich bis jetzt geschrieben habe die funzten nur so das sie entweder alle zellen zu Strings machten oder halt nur auf die spalte die Strings enthalten angewendet wurden.
Selectiert werden kann immer nur 1 Zeile.
Ich möchte den Renderer so hinbekommen das auf alle Zellen die Farben oben angewendet werden ohne das er den Zellentyp verändert. Sprich wenn dort vorher eine Checkbox drinnen war soll danach auch wieder eine checkbox drinnen sein.
Es hat noch kein Renderer richtig geklappt. =( Leider.
PS:
mein bisheriger Renderer:
meine modelspezifikationen:
ich habe auch eine variante von getColumnClass in der ich einen Spaltefestgelegten return gebe, aber da passiert nichts anderes.
Fragen:
1. Warum werden die Farben nicht auf die CheckBox angewandt
Ausserdem wird der Renderer zwar auf alle anderen Spalten angewandt, aber nur vom
value.toString() her. Die Farben werden nicht gesetzt bei allen Zellen wo vorher kein
String drinnen war.
2. Warum kommt wenn ich dann bei der CheckBox den Haken setzen will der Boolwert
der dahinter steht und nicht der Haken der eigentlich kommen sollte
3. Gibt es die Möglichkeit statt
value.toString();
den Inhalt der Zelle anders zurückzugeben so das der Typ erhalten bleibt
bin für jede Erklärung/Tip/Hilfe dankbar.
mfg
Snoop
selected
normal
focused
Spalten:
Boolean|Boolean|Integer|String|Integer|Integer|Double|Integer|Integer
alle Boolwerte werden als Checkbox dargestellt.
nun gehn die Probleme los. die Renderer die ich bis jetzt geschrieben habe die funzten nur so das sie entweder alle zellen zu Strings machten oder halt nur auf die spalte die Strings enthalten angewendet wurden.
Selectiert werden kann immer nur 1 Zeile.
Ich möchte den Renderer so hinbekommen das auf alle Zellen die Farben oben angewendet werden ohne das er den Zellentyp verändert. Sprich wenn dort vorher eine Checkbox drinnen war soll danach auch wieder eine checkbox drinnen sein.
Es hat noch kein Renderer richtig geklappt. =( Leider.
PS:
mein bisheriger Renderer:
Code:
public class Renderer extends JLabel implements DefaultTableCellRenderer{
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( ... normale Parameterliste){
if(hasFocus)
setBackground(colorFocus);
else if(isSelected)
setBackgroun(colorSelected);
else
setBackground(colorNormal);
if(value instanceof Boolean){
boolean enabled = ((Boolean)value).booleanValue();
final JCheckBox box = new JCheckBox();
box.setHorizontalAlignment(SwingContants.CENTER);
box.setSelected(enabled);
return box;
}
if(value instanceof Double){
final JLabel label = new JLable();
label.setHorizontalAlignment(SwingContants.CENTER);
label.setText(value.toString()); <-----
return label;
}
if(value instanceof Integer){
final JLabel label = new JLable();
label.setHorizontalAlignment(SwingContants.CENTER);
label.setText(value.toString()); <-----
return label;
}
return this;
}
}
meine modelspezifikationen:
Code:
public Class getColumnClass(int c){
return getClass();
}
ich habe auch eine variante von getColumnClass in der ich einen Spaltefestgelegten return gebe, aber da passiert nichts anderes.
Fragen:
1. Warum werden die Farben nicht auf die CheckBox angewandt
Ausserdem wird der Renderer zwar auf alle anderen Spalten angewandt, aber nur vom
value.toString() her. Die Farben werden nicht gesetzt bei allen Zellen wo vorher kein
String drinnen war.
2. Warum kommt wenn ich dann bei der CheckBox den Haken setzen will der Boolwert
der dahinter steht und nicht der Haken der eigentlich kommen sollte
3. Gibt es die Möglichkeit statt
value.toString();
den Inhalt der Zelle anders zurückzugeben so das der Typ erhalten bleibt
bin für jede Erklärung/Tip/Hilfe dankbar.
mfg
Snoop
Zuletzt bearbeitet: