Pegar valor de um JTable

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

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. :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??? :slight_smile:

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

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:

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? :smiley:

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