Editar Celulas - Jtable

2 respostas
V

Alguem conhece algum envento no Jtable que retorne o momento em que o usuario terminou de editar uma celula da Jtable?

Ex.
O usuario entra em uma celula e Altera o seu conteudo. Quando ele precionar ENTER. A celula vai perder o foco.
Eu gostaria de executar uma funcao no momento em que essa determinada celula perdese o foco.

Andei dando uma procurada por LostFocus da celula do Jtable mas nao estou obtendo mto sucesso.

Se alguem puder me ajudar! Dica, Codigo, Tudo Vale!.

No vb2005 existe um evento do Grid Chamado EndEdit. Que é bem oque eu procuro.
Mas nao sou mais da Microsoft. Preciso disso para JAVA.

Desde JA agradeco

2 Respostas

Mantu

Estou meio sem tempo, desculpe… Mas dê uma pesquisada sobre TableModel, TableModelListener e TableModelEvent. Acho que temos um caminho promissor por aqui…

  1. http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/TableModel.html
  2. http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/event/TableModelListener.html
  3. http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/event/TableModelEvent.html
V

Muito Obrigado!

Encontrei uma resposta para minhas questoes!

Criei uma classe interna que faz isso.

Essa é a classe.

//Essa Classe interna serve para Dizer quando a celula foi alterada e o seu respectivo valor
 public class EditarCelulaTabela extends AbstractCellEditor implements TableCellEditor {
        // Este é o componente que vai segurar o valor da edicao da celula
        JComponent component = new JTextField();
    
         //Este metodo é chamado quando a celula é editada pelo usuario.  
        public Component getTableCellEditorComponent(JTable table, Object value,
                boolean isSelected, int rowIndex, int vColIndex) {
            //'value'é o valor contido na celula que esta na localizacao ((rowIndex, vColIndex)
             
            if (isSelected)
            {
                // Celula (e talvez outras celulas) sao selecionadas
            }
            // Configura o componente com o valor Especificado
            ((JTextField)component).setText((String)value);
    
            // Retorna a configuracao do componente
            return component;
        }
    
    
        // Esse metodo é chamado quando é Terminado de Editar a Celula
        // Ela retorna o novo valor da Celula.
        public Object getCellEditorValue() {
        
             //Chama a funcao insert update da Tabela1 e passa o valor do da celula
             AlteraAssociado(((JTextField)component).getText());              
             //System.out.println(((JTextField)component).getText());               
        
            return ((JTextField)component).getText();
        }
    }
Como eu utilizo um modelo para inclementar a minha Jtable eu faço Digo logo apos fazer o Tabela.setModel, Quais colunas entrarao nao minha classe.
Tabela1.setModel(MeuModelo);
  TableColumn col = Tabela1.getColumnModel().getColumn(1);
  col.setCellEditor(new EditarCelulaTabela());

Fazendo isso Consigo Exatamento oque eu preciso.

Obrigado!

Criado 27 de abril de 2006
Ultima resposta 27 de abr. de 2006
Respostas 2
Participantes 2