Problema com AbstractTable e Checkbox

Bom dia, estou com um problema: Minha JTable tem alguns CheckBox mas quando clico neles não está setando TRUE ou FALSE. Já pesquisei bastante na internet, mas não achei nenhuma solução específica pro meu caso.

Só pra constar: Preencho minha table com dados vindos do BD. Segue o código da minha classe:

[code]private class MyTableModel extends AbstractTableModel {
// Empregagos que ser�o passados para popular a tabela

    ArrayList<Empresa> funcoes = new ArrayList<Empresa>();
    // Cabe&#65533;ao da tabela (titulos das colunas)
    final String[] CABECALHO = new String[]{
        "COD", "CNPJ", "Nome", "Atribuir"
    };


    public MyTableModel(ArrayList<Empresa> funcoes) {
        this.funcoes = funcoes;
    }

    /*
     * M&#65533;todo utilizado internamente para constru&#65533;&#65533;o da tabela.
     * @return Total de linhas da tabela.
     */
    @Override
    public int getRowCount() {
        return funcoes.size();
    }

    /*
     * M&#65533;todo utilizado internamente para constru&#65533;&#65533;o da tabela.
     * @return Total de colunasda tabela.
     */
    @Override
    public int getColumnCount() {
        return CABECALHO.length;
    }

    /*
     * M&#65533;todo utilizado internamente para constru&#65533;&#65533;o da tabela.
     * @return T&#65533;tulo da coluna.
     */
    @Override
    public String getColumnName(int i) {
        return CABECALHO[i];
    }

    @Override
    public Class<?> getColumnClass(int i) {
        if (i == 3) {
            return Boolean.class;

        }
        return super.getColumnClass(i);
    }

    public boolean isCellEditable(int i, int j) {
        if (j == 3) {
            return true;
        }
        return false;
    }

    @Override
    public void setValueAt(Object aValue, int i, int j) {
        Empresa value = (Empresa) funcoes.get(i);
        if (j == 3) {
            value.setEmp(true);
        }

    }

    @Override
    public Object getValueAt(int i, int j) {

        Empresa funcao = funcoes.get(i);

        switch (j) {

            case 0:
                return funcao.getId();
            case 1:
                return funcao.getCnpj();
            case 2:
                return funcao.getNome();
            case 3:
                return false;

            default:
                return "!!!";
        }
    }
}[/code]

O problema mais específico está nesse método:

[code]@Override
public void setValueAt(Object aValue, int i, int j) {
Empresa value = (Empresa) funcoes.get(i);
if (j == 3) {
value.setEmp(true);
}

    }[/code]

Obrigado desde já

Thiago Otero uma solução seria vc inserir ao check um evento e verificar se ele está selecionado ou ñ [code]

check.addActionListener(new ActionListener() {

		public void actionPerformed(ActionEvent arg0) {

//Método para verificar o check, retornando um boolean
System.out.println(check.isSelected());
}
});

[/code]

Se não funcionar o evento no check add MouseListener na tabela e utiliza a mesma ideia.

E outra coisa q percebi e pode até ser seu problema principal, no código

[code]@Override
public void setValueAt(Object aValue, int i, int j) {
Empresa value = (Empresa) funcoes.get(i);
if (j == 3) {
value.setEmp(true);
}

    }  [/code]

na linha value.setEmp(true); vc vai utilizar esta variável depois? Se ñ, vc tem q setar no objeto que está no Array e não em value.

Algo do tipo funcoes.get(i).setEmp(true);