Hallo zusammen,
ich hab hier ein kleines Problem mit einem TableCellRenderer, der beim sortieren der JTable nicht ganz so will wie ich:
Ich habe mit einen eigenen TableCellRenderer geschrieben um JComboboxen in einer Tabelle darstellen zu können, das funktioniert soweit auch. Der Rowsorter an sich funktioniert auch.
Abhängig vom Wert einer Spalte setze ich eine andere auf disabled, was auch noch gut funtioniert (indem ich isCellEditable im TableModel überschreibe).
ABER:
Wenn ich dann sortiere wird die Zelle nicht korrekt geupdatet, das Verhalten zwar schon, d.h. in der sortierten Zeile kann weiterhin die Comobox benutzt werden, in den anderen nicht mehr, aber die benutzbare Combobox ist jetzt grau hinterlegt und die deaktivierte ist schön weiss.
Ich hoffe, mein Problem ist einigermassen rübergekommen.
Mit kleinem Beispiel ist es im Moment schwierig, wegen dem mittlerweile recht grossen Umfang.
Hier aber mal der CellRenderer:
Ich glaube aus irgendeinem Grund wird der CellRenderer beim sortieren nicht korrekt benachrichtigt.... Ist aber nur eine Vermutung.
Danke schonmal für eure Hilfe!
ich hab hier ein kleines Problem mit einem TableCellRenderer, der beim sortieren der JTable nicht ganz so will wie ich:
Ich habe mit einen eigenen TableCellRenderer geschrieben um JComboboxen in einer Tabelle darstellen zu können, das funktioniert soweit auch. Der Rowsorter an sich funktioniert auch.
Abhängig vom Wert einer Spalte setze ich eine andere auf disabled, was auch noch gut funtioniert (indem ich isCellEditable im TableModel überschreibe).
ABER:
Wenn ich dann sortiere wird die Zelle nicht korrekt geupdatet, das Verhalten zwar schon, d.h. in der sortierten Zeile kann weiterhin die Comobox benutzt werden, in den anderen nicht mehr, aber die benutzbare Combobox ist jetzt grau hinterlegt und die deaktivierte ist schön weiss.
Ich hoffe, mein Problem ist einigermassen rübergekommen.
Mit kleinem Beispiel ist es im Moment schwierig, wegen dem mittlerweile recht grossen Umfang.
Hier aber mal der CellRenderer:
Java:
public class ComboBoxRenderer extends JComboBox implements TableCellRenderer {
private static final long serialVersionUID = 1L;
public ComboBoxRenderer(final String[] items) {
super(items);
}
@Override
public Component getTableCellRendererComponent(final JTable table, final Object value,
final boolean isSelected, final boolean hasFocus, final int row, final int column) {
if (table != null) {
if (table.getModel().isCellEditable(row, column)){
setEnabled(true);
} else setEnabled(false);
}
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
if (isEnabled() == false) {
setForeground(table.getGridColor());
setBackground(table.getGridColor());
}
}
setSelectedItem(value);
return this;
}
Ich glaube aus irgendeinem Grund wird der CellRenderer beim sortieren nicht korrekt benachrichtigt.... Ist aber nur eine Vermutung.
Danke schonmal für eure Hilfe!