Clicar em linha de jtable

7 respostas
H

bom dia, pessoal!!!
tenho uma tabela preenchida com nome e email(por exemplo) e quero que, quando clicar em uma linha, os dados do cliente dessa linha preencham campos de texto…
qual o evento da jtable que faz isso???
Caso contrário, como resolvo essa pessoal??
Obrigado a todos!!
Horácio

7 Respostas

drsmachado

Se eu não estou enganado é onCellSelected

H

como eu acho esse evento???procurei lá mas não encontrei…

R

Eu faço da seguinte maneira:

tabela.getSelectionModel().addListSelectionListener(
  new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
      // Seu código aqui
    }});

tabela.getColumnModel().getSelectionModel().addListSelectionListener(
  new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
      // Seu código aqui
    }});

O primeiro trecho permite processar a seleção de linhas, enquanto o segundo trecho permite processar a seleção de colunas.

H

tá…essa parte eu entendi…chamos os métodos para ele poder habilitar a seleção, mas e agora??? não estou sabendo preencher os campos(nesse caso, o campo nome, apenas…)

jTable1.getColumnModel().getSelectionModel().addListSelectionListener(
                new ListSelectionListener() {

                    public void valueChanged(ListSelectionEvent e) {

                        nome.setText("qual o valor que entra aqui?");

                    }
                });

qual o valor que eu tenho que pegar???

R

Com o método JTable.getSelectedRow() você pode consultar a linha selecionada atualmente na tabela. Com essa informação, você poderá então ler os campos adequados.

H

eu tinha testado esse, aí, como (inicialmente) não rolou do jeito que esperava e presumindo minha completa inexperiência com JAVA, resolvi deixar quieto, aí, vc falou eu testei e continuou não indo, mas eu fui na confiança e mexi um pouco…
ficou assim:

nome.setText(""+jTable1.getSelectedRow());

aí, deu certo, ele pegou o numero da linha…beleza…
mas ainda, como bom chato que eu sou, quero complicar…
outra coisa, pq as vezes, eu clico na coluna da esquerda e ele imprime, outras vezes, tenho que clicar na coluna da direita( 2 colunas apenas que eu montei para testar)tipo, andar em zigue-zague para o evento funcionar??
Como faço para pegar o conteudo dessa linha???
Ei, muito obrigado pela força!!!
to gostando muito de Java…mas ainda não domino…então espero que compreendam minha “chatice” inicial…
Mais um vez, muito obrigado, de verdade!!!

R

O evento é disparado apenas quando você muda de coluna porque você usou o segundo trecho que postei acima, que monitora mudanças na coluna selecionada. Experimente usar também o primeiro trecho, que monitora mudanças na linha selecionada:

tabela.getSelectionModel().addListSelectionListener(  
  new ListSelectionListener() {  
    public void valueChanged(ListSelectionEvent e) {  
      // Monitoramento de mudanças na linha selecionada
      rotinaParaTabela();
    }});

tabela.getColumnModel().getSelectionModel().addListSelectionListener(  
  new ListSelectionListener() {  
    public void valueChanged(ListSelectionEvent e) {  
      // Monitoramento de mudanças na coluna selecionada
      rotinaParaTabela();
    }});

private void rotinaParaTabela() {
  // Seu código aqui
}

Sobre a suposta “chatice”, não há problema - qualquer em pessoa em algum momento é iniciante em qualquer assunto. Uma das coisas boas de trabalhar com Java é que a comunidade se ajuda bastante. Conforme ganha experiência, não se esqueça de dar também a sua contribuição aqui no GUJ.

Criado 11 de março de 2011
Ultima resposta 11 de mar. de 2011
Respostas 7
Participantes 3