Ogólnie działa to tak:
Tabela wyświetla komórkę przez TableCellRenderer'a (metoda: getTableCellRendererComponent)
O edycji m.in. decyduje TableModel (metoda: isCellEditable)
Jak zaczyna się edycja, komórka jest wyświetlana przez TableCellEditor (metoda: getTableCellEditorComponent)
Jak kończy się edycja, nowa wartość jest zwracana przez TableCellEditor (metoda: getCellEditorValue)
Nową wartość zapisuje TableModel (metoda: setValueAt)
Jak chcesz użyć DefaultCellEditor'a to:
Prawdopodobnie coś on tam różnego zwraca po edycji w zależności czy ten checkBox został zaznaczony czy odznaczony. Czyli w TableModelu (u ciebie dm[1]) przesłaniasz metodę setValueAt(Object value, int row, int column) i zapisujesz sobie nową wartość (value) w... bazie (?). (prawdopodobnie - bo nie wiem czym dokładnie będzie to value - trzeba by w google poszukac)
Jak chcesz zrobić swojego TableCellEditora to możesz np tak:
public class ChecBoxEditor extends AbstractCellEditor implements TableCellEditor {
private CheckBoxRenderer renderer;
public CheckBoxRenderer() {
renderer = new CheckBoxRenderer();
}
public Component getTableCellEditorComponent(
JTable table,
Object value,
boolean isSelected,
int row,
int column) {
return renderer.getTableCellRendererComponent(table, value, isSelected, true, row, column);
}
public Object getCellEditorValue() {
if(renderer.isSelected()) return new Boolean(true);
return new Boolean(false);
}
}
Pamiętaj, że tutaj też musisz w TableModelu przesłonić metodę setValueAt(Object value, int row, int column). To value to jest właśnie ten Boolean z CheckBoxEditor'a.