Pegar valor de um JTable

5 respostas
M

Eu vi essa pergunta em um outro forum de java, mas la nao teve resposta, entao eu faço a pergunta do colega aqui nesse, espero ter a reposta.



Ola pessoal



gostaria de saber como eu posso pegar um certo valor de uma certa Celula de um JTable

Eu crio um Modelo de Tabela extendido do AbstractTableModel

e eu implementei o metodo getValueAt(int linha,int coluna)



eu sei que ele retorna o Object normal, o problema é.



eu quero pegar a celula que o Usuario clicou no JTable, como eu vou saber qual a Linha e qual a Coluna que o cara clicou no JTable pra mim passar pro método getValueAt?



Acho que é uma questao simples pra quem trabalha com Java profissionalmente



Obrigado

5 Respostas

A
O método getValueAt() retorna o valor na célula dando a coordenada. Ou seja, ele recebe o número da linha e da coluna que se quer o valor, retornando um Object.


Basicamente a implementação dele é da seguinte forma:


public Object getValueAt(int linha, int coluna){


            Vector vet = null;


            Object o = null;


            try{


                vet = (Vector)dados.elementAt(linha);


                o = vet.elementAt(coluna);


            }


            catch(ClassCastException e){


            }


            return o;


 }





Quando o usuário clica na tabela, o método getValueAt(int, int) é chamado passando o número da linha e coluna clicados, a API faz isso. <img src="//https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pnglight_smile.png?v=5" title=":slight_smile:" class="emoji" alt=":slight_smile:"> Então, você tem que ler os valores, primeiro na horizontal e depois na vertical para então saber o valor da célula. Note que primeiro é criado um vector da linha clicada, depois um vector da coluna clicada.


Ceirto??? <img src="//https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pnglight_smile.png?v=5" title=":slight_smile:" class="emoji" alt=":slight_smile:">
M
Valeu pelas explicações aspirantes, mas eu ainda nao entendi uma coisa


o que eu quero é o seguinte





quando eu apertar um botao, eu guardo numa variavel o valor da celula


ae como eu vou saber a linha e coluna?


± assim


btnMostrar.addActionListener(new ActionListener() {


  public void actionPerformed(ActionEvent evento) {


    vValor = modelo.getValueAt(?,?);


  }


});





modelo é meu objeto estanciado da classe ModeloTabela que eu criei extendendo AbstractTableModel
G

Olá, moço!



bem, vamos lá:



Se você quiser saber qual o índice da linha selecionada pelo usuário:

JTable.getSelectedRow() => retorna um inteiro, que indica qual a linha selecionada pelo usuário; Retorna -1 se nenhuma linha estiver selecionada!



Espero ter ajudado!



abraços! :slight_smile:

G
Para completar minha resposta:





no código fonte que tu passou na tua mensagem, para fazer o que você quer, ficaria mais ou menos assim:





btnMostrar.addActionListener(new ActionListener() {


  public void actionPerformed(ActionEvent evento) {


    int linha = nomeDeSuaTabela.getSelectedRow();


    int coluna = x; // x é o número da coluna dentro de sua tabela, da qual


                          //você quer resgatar o valor





    vValor = modelo.getValueAt(linha, coluna);


  }


});





Acho que é isso


A propósito, não tem uma vaga pra mim aonde você trabalha? <img src="//https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pngmiley.png?v=5" title=":smiley:" class="emoji" alt=":smiley:">
M

Obrigado givaldo

agora deu tudo certo…



sobre trabalhar onde eu trabalho, eu infelismente não sou o dono da empresa, hehehe, e aqui nem trabalhamos com java (ainda não), apenas Delphi e PHP, mas um dia pretendo mudar as coisas aqui pra Java, por isso estou estudando ela…



obrigado pela ajuda ae

Criado 26 de fevereiro de 2003
Ultima resposta 28 de fev. de 2003
Respostas 5
Participantes 3