The solution was to extend AbstractTableModel instead of DefaultTableModel. I also had to include appropriately overloaded versions of two methods of AbstractTableModel:
@Override public boolean isCellEditable(int row, int col) { return true; }
@Override
public void setValueAt(Object value, int row, int col) {
Data.get(row)[col] = (String) value;
fireTableCellUpdated(row, col);
}