Hoi,
hatte mich deswegen schon mal gemeldet. aber es hieß wenn ichs net hinbekomme noch mal laut schreien ... :roll:
Also, erstmal mein prob:
hab ne tabelle in der ich per button die hintergrundfarbe einer zelle ändern kann. wenn ich das tue, dann wird der inhalt der zelle überschrieben.
Bsp.: wenn ich der zelle "welt" nen roten hintergrund geben will wird aus:
Hintergrundfarbe in beiden Zellen: weiß.
klick auf welt, dann klick auf meinen einfärb-button:
Hintergrundfarbe zelle 2 ist jetzt rot (soll auch so ), aber wenn ich in eine andere zeile, oder eine zelle davor klicke steht da nimmer "welt", sondern "hallo".
hab die table ohne tablemodel generiert, und würd das jetzt auch nur ungern ändern.
Hier mal der renderer:
und wie ichs der table übergebe:
Hoffe es kann mir wer helfen, hab scho gott weiß was versucht.
Danke,
T1M
hatte mich deswegen schon mal gemeldet. aber es hieß wenn ichs net hinbekomme noch mal laut schreien ... :roll:
Also, erstmal mein prob:
hab ne tabelle in der ich per button die hintergrundfarbe einer zelle ändern kann. wenn ich das tue, dann wird der inhalt der zelle überschrieben.
Bsp.: wenn ich der zelle "welt" nen roten hintergrund geben will wird aus:
Code:
|-----------|-------------|
| Hallo | Welt |
|-----------|-------------|
klick auf welt, dann klick auf meinen einfärb-button:
Code:
|-----------|-------------|
| Hallo | Hallo |
|-----------|-------------|
hab die table ohne tablemodel generiert, und würd das jetzt auch nur ungern ändern.
Hier mal der renderer:
Code:
class ColorTableCellRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected,
boolean hasFocus, int row,
int column)
{
/* super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);*/
System.out.println("row: "+row+" column: "+column);
System.out.println("#### Value: "+ value.toString());
System.out.println("Klasse: " + value.getClass());
if (value instanceof Color)
{
System.out.println("###Value1: "+ value);
Color color = (Color)value;
System.out.println("row: "+row+" column: "+column);
this.setBackground(color);
//value = table.getValueAt(row, column);
//this.setText(value.toString());
//this.setText(getText());
//setText(getText());
}
else
{
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
setBackground(table.getBackground());
}
return this;
}
}
und wie ichs der table übergebe:
Code:
table = new JTable(data, columnNames)
{
public Class getColumnClass(int i)
{
switch (i)
{
case 0: return Color.class;
case 1: return Color.class;
case 2: return Color.class;
case 3: return Color.class;
case 4: return Color.class;
default: return String.class;
}
}
};
add(table, panel_table, gbc, 0, 0, 1, 1);
//Hier wird der JTable gesagt, dass Objekte des Types "Color"
//vom "ColorTableCellRenderer" dargestellt werden
table.setDefaultRenderer(Color.class, new ColorTableCellRenderer());
Hoffe es kann mir wer helfen, hab scho gott weiß was versucht.
Danke,
T1M