Obtendo valor de uma célula Jtable

Olá pessoal,

estou com o seguinte problema, tenho uma jtable e preciso pegar o valor digitado na mesma, ja tentei com getValueAt “que retorna null” mesmo dando enter na célula após eu digitar e tentei tambem com getCellEditor, porem não consegui transformar o valor voltado do getCellEditor para um inteiro.

Ja dei uma olhada aqui no forum e em outros foruns porem não resolveu o meu problema ainda, segue o código:


    private void areaEstoqueKeyPressed(java.awt.event.KeyEvent evt) {                                       

            int coluna = areaEstoque.getSelectedColumn();
            int linha = areaEstoque.getSelectedRow();
                if(coluna == 0)
                {
                    
                    if (evt.getKeyCode() == KeyEvent.VK_ENTER){
                        
                            JDialog consultarPop = this.criaDialogConsulta(Utils.PRODUTO);
                            consultarPop.setVisible(true);
                            
                            
                            // aqui vc tem o objeto carregado com os valores da consulta
                            produtoSelecionado = painelConsulta.getProdutoSelecionado();
                            
                            //aqui vc tem a lista de produtos
                           if (listaProdutos == null)
                                listaProdutos = new ArrayList<Produto>();
                           
                           listaProdutos.add(produtoSelecionado);                                                  
                            
                           
                           
                           // aqui iniciamos a lista de estoque_produto
                           if (listaEstoqueProdutos == null)
                               listaEstoqueProdutos = new ArrayList<EstoqueProduto>();
                           
                           
                           
                            if (produtoSelecionado != null){
                                 
                                areaEstoque.getModel().setValueAt(produtoSelecionado.getIdProduto(), linha, 0);
                                areaEstoque.getModel().setValueAt(produtoSelecionado.getDescricao(), linha, 1);
                                areaEstoque.getModel().setValueAt(produtoSelecionado.getValorVenda(), linha, 5);
                                areaEstoque.getModel().setValueAt(produtoSelecionado.getPrecoFabrica(), linha, 4);
                                
                                
                             }
                            
                            
                            for (int i = 0; i < listaProdutos.size(); i++){
                               
                               
                                //valor volta null aqui
                                System.out.print("QTDE" + " " + areaEstoque.getValueAt(0, 2));
                                
                               // aqui retorna o seguinte valor " javax.swing.JTable$GenericEditor@6aadae91 "
                                System.out.print("valor tabela" + " " + areaEstoque.getCellEditor(0, 2));
                  
                                
                               //agora vamos iniciar o estoque produto
                               estoqueProdutoSelecionado = new EstoqueProduto();
                               //vamos carregar o objeto esqoqueProdutoSelecionado
                               estoqueProdutoSelecionado.setId_produto(produtoSelecionado.getId());
                               estoqueProdutoSelecionado.setQuantidade(Integer.parseInt(areaEstoque.getValueAt(i, 2).toString()));
                               estoqueProdutoSelecionado.setQuantidade_pedido(Integer.parseInt(areaEstoque.getValueAt(i, 3).toString()));
                               estoqueProdutoSelecionado.setValor_fabrica(new BigDecimal(areaEstoque.getValueAt(i, 4).toString()));
                               estoqueProdutoSelecionado.setValor_venda(new BigDecimal(areaEstoque.getValueAt(i, 5).toString()));
                               
                               listaEstoqueProdutos.add(estoqueProdutoSelecionado);
                               
                           }
                        
                    }
                    
                    
                }
        
        
    }                                  

uma tabela tem várias linhas e colunas, voce qer pegar o valor da tabela intera :S, ou de determinado campo?

Olá,

na verdade eu quero pegar todos os campos, q ja estão carregados na jtable e tamb dois campos que eu posso digitar na mão os valores, com o getValueAt eu consigo pegar os valores q ja estão carregados na tabela, porem não consigo pegar os valores digitados na mão, ele retorna null, com o getValueAt .

eu não saquei muito bem, meu amigo, mas para pegar valores numa tabela, no meu caso eu usei esse código:

int row = jTable1.getSelectedRow(); //pega a linha selecionada
      if(row > -1) //ve se a linha é maior do menos -1 pra ver se tem algo selecionado
           Object value = jTable1.getValueAt(row, 0); //aqui ele pega o valor da linha selecionada e da coluna 0, pois eu só precisava do código
      else 
            syso("nenhuma valor selecionado");

vê se te ajuda.

Lucas,

tentei assim tamb e ele retornou null…
"/


  int linha = areaEstoque.getSelectedRow();

 Object value = areaEstoque.getValueAt(linha, 2);
                                
  System.out.print("valor tabela" + " " + value);

deixa eu ver se entendi mesmo, voce quer pegar TODOS os CAMPOS da tabela, todas as linhas e colunas, mais dois valores qe voce inserir?
pra pegar todos os valores da coluna, faz um for, e no parametro vc poe o contador.
uma vez me falaram dum método pra atualizar a tabela com os novos valores, sei lá se é repaint,
acho legal voce ver isso.

Olá,

resolvi o problema…

eu estava tentando pegar o valor dentro de uma função aqui e dentro dela ele ainda nao tinha pegado o valor digitado, ai eu coloquei no meu metodo de salvar do botão e ele conseguiu pegar o valor.

Obrigado ai cara, vlw.

nem sei se te ajudei, mas de boa.

bota a solução e no título [RESOLVIDO], meu chapa.

Caros, estou com o seguinte problema:

Por exemplo tenho uma Jtable certo, clico em uma célula,e digito 100 na mesma e em seguida já pressiono enter. ( ele nao pega o valor 100 digitado)

Agora se eu digitar o valor 100 na célula, clicar em outra célula e novamente clicar na célula q esta o valor 100 ai sim ele pega o valor 100.

Oq eu quiria é q ele pegasse o valor digitado na célula sem ter q perder o foco na mesma.

Alguem poderia me ajudar?

Grato

Ou se eu fizer com o focusLost tambem serve.

Estou tentando fazer da seguinte maneira:

Estou adicionando uma JtextField dentro de uma coluna da minha Jtable, porem o focusLost não reconhece essa minha JtextField e não entra dentro do focusLost.

Segue código abaixo:

        TableColumn tc1 = areaEstoque.getColumnModel().getColumn(4);
        tc1.setCellEditor(new DefaultCellEditor(tfFabrica));
        
        tfFabrica.addFocusListener(new FocusAdapter() {  
            public void focusLost(FocusEvent e) {  
                //adicionar sua verificação aqui  
                
                JOptionPane.showMessageDialog(null, "Teste");  
            }  
        });