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