JTable e JTextField [RESOLVIDO]

4 respostas
F

Bom dia pessoal,

Sou iniciante em java,
Eu tenho uma aplicação que está conectada ao BD MySQL,

Ela está populando o JTable belezinha!

Eu gostaria de quando eu selecionar um registro no JTable ele popular os textfields para que eu possa alterar ou excluir.

Alguém sabe me indicar algum tutorial, ou algum código que eu possa fazer isso??

Obrigado,

Allan Furlani

4 Respostas

Nicolas_Fernandes

Furlani:
Bom dia pessoal,

Sou iniciante em java,
Eu tenho uma aplicação que está conectada ao BD MySQL,

Ela está populando o JTable belezinha!

Eu gostaria de quando eu selecionar um registro no JTable ele popular os textfields para que eu possa alterar ou excluir.

Alguém sabe me indicar algum tutorial, ou algum código que eu possa fazer isso??

Obrigado,

Allan Furlani


Fala Allan, beleza?

  1. Você deve adicionar um Listener para a sua JTable para informar quando você clicar sobre um registro dela.
  2. Tenha em mente que é necessário que você crie um modelo para a sua JTable, para trabalhar diretamente com objetos de negócio. Siga o link na minha assinatura para ter uma ideia mais clara sobre o assunto.
  3. Com os dois primeiros tópicos solucionados, você pode fazer um código do tipo no seu evento:
// se realmente selecionou uma linha...
if (minhaTabela.getSelectedRow() != -1) {
   
    MinhaClasse objeto = meuModeloDeTabela.recuperarObjeto(minhaTabela.getSelectedRow());
    // onde:
    //    MinhaClasse -> sua classe de negócio
    //    objeto -> sua variável da sua classe de negócio
    //    meuModeloDeTabela -> sua variável que representa o TableModel da sua JTable
    //    minhaTabela -> sua variável que representa a JTable.

    // após recuperar objeto selecionado, é  preencher os campos em seus determinados componentes.
    meuTextField.setText(objeto.getCampoQualquer());
    meuOutroTextField.setText(objeto.getOutroCampoQualquer());
}

Sacou a ideia?
Abraços!

F

Eae Nicolas,

Valeu pela ajuda… eu andei pesquisando tbm algumas outras coisas e achei um codigo aqui bem simples,
Você deve ter muito mais experiência que eu … sabe se isso tbm está certo?

Criei uma variável descrição e armazenei o o valor que estava na segunda coluna da minha tabela… em seguida setei o valor da minha variável no meu text…

String descricao = String.valueOf(resultCargo.getValueAt(resultCargo.getSelectedRow(), resultCargo.convertColumnIndexToView(1))); txtDescricao.setText(descricao);

Vlw!!

Nicolas_Fernandes

Furlani:
Eae Nicolas,

Valeu pela ajuda… eu andei pesquisando tbm algumas outras coisas e achei um codigo aqui bem simples,
Você deve ter muito mais experiência que eu … sabe se isso tbm está certo?

Criei uma variável descrição e armazenei o o valor que estava na segunda coluna da minha tabela… em seguida setei o valor da minha variável no meu text…

String descricao = String.valueOf(resultCargo.getValueAt(resultCargo.getSelectedRow(), resultCargo.convertColumnIndexToView(1))); txtDescricao.setText(descricao);

Vlw!!


Sim, isso está certo. Mas eu não indico ir por esse caminho de linha/coluna para JTables.
Quando você estiver trabalhando com um número muito grande de colunas e uma grande massa de dados, isso vai dar MUITA dor de cabeça, vai por mim. rs

Você está usando o DefaultTableModel para a sua JTable, não? Recomendo fortemente que abandone essa prática e comece a estudar como criar seus próprios modelos de tabelas, os famosos TableModels. Com isso, você trabalhará diretamente com objetos de negócio, facilitanto DEMAIS a sua vida na hora do desenvolvimento.

Vale a pena “perder” tempo aprendendo como criar seu próprio modelo e ganhar na produtividade e na simplicidade e manutenção do código, posteriormente. Faça um esforço, acesse o link e aprenda a fazer seu próprio modelo. Eu aprendi há um bom tempo e não uso outra coisa para JTables em meus projetos (exceto o ObjectTableModel, do Marky, que você verá mais pra frente, pesquisando no fórum).

Abraço!

F

Beleza Nicolas, Vlw mesmo pela ajuda cara!!!

Criado 9 de agosto de 2011
Ultima resposta 9 de ago. de 2011
Respostas 4
Participantes 2