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
Clicar em linha de jtable
7 Respostas
Se eu não estou enganado é onCellSelected
como eu acho esse evento???procurei lá mas não encontrei…
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.
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???
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.
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!!!
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.