JTable - modo de editar dados das colunas

Bom dia,

Possuo um objeto JTable que tem um modelo bem simples criado a partir do AbstractTableModel (como é recomendado aqui, em vez de usar o DefaultTableModel).
Essa tabela contém vários dados numéricos a serem editados.
O problema é que, ao dar clique duplo em uma coluna do JTable, a coluna entra no modo de edição, mas só sai desse modo quando se aperta a tecla “Enter”, ou quando se clica em outra coluna. Se isso não for feito, a coluna não sai do modo de edição nem se um botão externo ao JTable (um JButton) for pressionado.
Então, eu queria saber:

  • Como fazer com que o ato de dar clique único em uma coluna já faça com que entre no modo de edição.
  • Como forçar as colunas a saírem do modo de edição e atualizem os seus dados sempre que a tabela perder foco (ou seja, quando qualquer outro objeto externo é selecionado).

Obrigado.

Você poderia implementar dois Listeners que resolveriam seu problema:

  • ListSelectionListener - para saber quando o usuário selecionou uma determinada célula e então chamar o método editCellAt(int, int) para tornar a célula editável.
  • FocusListener - para saber quando a tabela perdeu o foco e então pegar o editor JTable.getCellEditor e chamar o método stopCellEditing (para aceitar a edição parcial).
    Acho que eu faria desta forma.
    Talvez alguém tenha alguma outra forma mais simples.

Obrigado.

Encontrei um jeito bastante simples de forçar a tabela a terminar a edição ao perder o foco:

(jtable é um objeto JTable)
Quando tentar implementar o ListSelectionListener, vou avisar como ficou.