[JTable, Renderer] - Tentando editar célula em JXTable sem sucesso

Ola pessoall, estou com um problema e gostaria ajuda, dicas, não consigo atualizar o campo da célula do JDateChooser e do JComboBox, ela esta habilitada para ser editada, mas o valor passado não muda na célula, ja pesquisei pra caramba no google e aqui no Forum e não encontrei uma solucao.

Problemas:
1:
Quando seleciono a data no JDateChooser, ela não muda na célula, se muda, é sobrescrita rapidamente.
2:
Quando seleciono algum item do meu JComboBox, ou escrevo, ele não muda o valor da célula.

Abaixo apresento parte dos codigos que creio que seja util, devo estar errando em algum passo dos renderer’s…

Segue o meu modelo:

[code]public class ProjectTableModel extends AbstractTableModel {

private Atividade ac = new Atividade();
private List<Atividade > rows;
private String[] columns = {
    "Atividades",
    "Data Comeco", "Data Fim",
    "Data Comeco", "Data Fim",
    "Data Comeco", "Data Fim",
    "Data Comeco", "Data Fim",
    "Data Comeco", "Data Fim",
    "Designer de Concepcao",
    "Designer do Basico",
    "Designer de Detalhes",
    "Designer de Verificacao",
    "Designer de Aprovacao",
    "Horas vendidas",
    "Horas consumidas",
    "Horas adicionais"        
};

public ProjectTableModel() {
    rows = new ArrayList<Atividade >();
}

public ProjectTableModel(List<Atividade > list) {
    rows = new ArrayList<Atividade >(list);
}

@Override
public int getColumnCount() {
    return columns.length;
}

@Override
public int getRowCount() {

    return rows.size();
}

@Override
public String getColumnName(int columnIndex) {

    return columns[columnIndex];
}

@Override
public Class<?> getColumnClass(int columnIndex) {

    switch (columnIndex) {
        case 0:
            return String.class;
        case 1:
            return Calendar.class;
        case 2:
            return Calendar.class;
        case 3:
            return Calendar.class;
        case 4:
            return Calendar.class;
        case 5:
            return Calendar.class;
        case 6:
            return Calendar.class;
        case 7:
            return Calendar.class;
        case 8:
            return Calendar.class;
        case 9:
            return Calendar.class;
        case 10:
            return Calendar.class;
        case 11:
            return String.class;
        case 12:
            return String.class;
        case 13:
            return String.class;
        case 14:
            return String.class;
        case 15:
            return String.class;
        case 16:
            return Double.class;
        case 17:
            return Double.class;
        case 18:
            return Double.class;
        default:
            throw new IndexOutOfBoundsException("ColumnIndex out of bounds");
    }
}

@Override
public Object getValueAt(int indexRow, int indexColumn) {

    ac = (Atividade) rows.get(indexRow);

    switch (indexColumn) {
        case 0:
            return ac.getNomActivite();
        case 1:
            return ac.getPhases().get(0).getDateStart();
        case 2:
            return ac.getPhases().get(0).getDateEnd();
        case 3:
            return ac.getPhases().get(1).getDateStart();
        case 4:
            return ac.getPhases().get(1).getDateEnd();
        case 5:
            return ac.getPhases().get(2).getDateStart();
        case 6:
            return ac.getPhases().get(2).getDateEnd();
        case 7:
            return ac.getPhases().get(3).getDateStart();
        case 8:
            return ac.getPhases().get(3).getDateEnd();
        case 9:
            return ac.getPhases().get(4).getDateStart();
        case 10:
            return ac.getPhases().get(4).getDateEnd();
        case 11:
            return ac.getPessoa().get(0).getNome() + " " + ac.getPessoa().get(0).getSobrenome();
        case 12:
            return ac.getPessoa().get(1).getNome() + " " + ac.getPessoa().get(1).getSobrenome();
        case 13:
            return ac.getPessoa().get(2).getNome() + " " + ac.getPessoa().get(2).getSobrenome();
        case 14:
            return ac.getPessoa().get(3).getNome() + " " + ac.getPessoa().get(3).getSobrenome();
        case 15:
            return ac.getPessoa().get(4).getNome() + " " + ac.getPessoa().get(4).getSobrenome();
        case 16:
            return ac.getHoras(); //teste
        case 17:
            return ac.getHoras(); //teste
        case 18:
            return ac.getHoras(); //teste
        default:
            throw new IndexOutOfBoundsException("columnIndex out of bounds");
    }
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
    if (columnIndex == 0) {
        return false;
    } else {
        return true;
    }
}

}[/code]

Meu JDateChooserRenderer :

[code]class JDateChooserRenderer extends JDateChooser implements TableCellRenderer {

@Override
public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
    // TODO Auto-generated method stub
    if (value instanceof Date) {
        this.setDate((Date) value);
    } else if (value instanceof Calendar) {
        this.setCalendar((Calendar) value);
    }
    this.setDateFormatString("dd/MM/yyyy");
    
    return this;
}

}[/code]

meu DateCellEditor:

[code]class DateCellEditor extends AbstractCellEditor implements
TableCellEditor {

private JDateChooser dateChooser = new JDateChooser();  


@Override
public Component getTableCellEditorComponent(JTable table, Object value,  
        boolean isSelected, int row, int column) {  
    if (value instanceof Date) {
        dateChooser.setDate((Date) value);
    } else if (value instanceof Calendar) {
        dateChooser.setCalendar((Calendar) value);
    }
    dateChooser.setDateFormatString("dd/MM/yyyy");
    return dateChooser;
}

@Override
public Object getCellEditorValue() {  
    SimpleDateFormat sformat = new SimpleDateFormat("dd/MM/yyyy"); 
    
    return sformat.format(dateChooser.getDate()); 
} [/code]

Meu codigo para editar cada coluna:

[code] int i = 1;
while ( i <= 10 ) {
TableColumn column = table.getColumnModel().getColumn(i);
column.setCellRenderer(new JDateChooserRenderer());
column.setCellEditor(new DateCellEditor());
i++;
}

    JComboBox comboBox = new JComboBox();
    Iterator it = lpe.iterator(); //lpe = list de pessoas para teste
    while ( it.hasNext() ) {
        Pessoa aux = (Pessoa ) it.next();
        comboBox.addItem(aux.getNome()+" "+aux.getSobrenome());
    }

    comboBox.setEditable(true); //Adicionar AutoComplete!!
    
    while (i <= 15) {
        TableColumn column = table.getColumnModel().getColumn(i);
        column.setCellEditor(new DefaultCellEditor(comboBox));
        i++;
    }
    table.setEditable(true);
    table.setSortable(false);


[/code]

Em anexo, screen da table.

Muito obrigado pela ajuda :slight_smile: