Pegar dados de uma JTable

GAleraa, como faço pra pegar os dados em um JTable, tipo, em um textFiel é só: txt.getText() , como isso ficaria p pegar os dados de uma JTable?
vlw!

vc usa

jtable.getValueAt(int coluna, int linha); jtable.getValueAt(int coluna, int linha);ai ele vai te retornar o valor (verifica se esse eh o nome do metodo e verifica a ordem dos parametros).

ai pra saber qual tá selecionada vc usa:

int linhaSel = jtable.getSelectedRow(); int colunaSel = jtable.getSelectedColumn(); int linhaSel = jtable.getSelectedRow(); int colunaSel = jtable.getSelectedColumn();

ai eh soh passa esses valores como parametros do getValueAt…

achu que é isso!! ve se ajuda!

1 curtida

[quote=lokit"s]vc usa

jtable.getValueAt(int coluna, int linha);  

[/quote]

Se você usa esse método, então é porque não sabe trabalhar com o JTable corretamente.

Para pegar um dado de um JTable, você pergunta para o model. A JTable é dividida, basicamente, em duas partes importantes:

  1. O JTable, que faz a exibição dos dados;
  2. O TableModel, que fiz ao JTable que dados serão exibidos.

Para usar um JTable direito, você obrigatoriamente deve saber como construir um TableModel, filho de AbstractTableModel. É ele que vai descrever os valores para o JTable, e é ele que vai retornar a você os valores que estão sendo exibidos.

Então, vamos supor que sua tabela contenha dados de clientes. O comando para pegar um desses dados e exibir no JTextField é:

Cliente cliente = modelClientes.get(row); txtNomeCliente.setText(cliente.getNome());

Onde row é a linha que você quer obter o valor e modelClientes é um objeto do tipo ClienteTableModel, escrito por você. Obter qual linha está selecionada é um atributo da visão. Então, nesse caso, você realmente usa um dos métodos “getSelected” que o colega descreveu acima.

Se você ainda não sabe fazer seu próprio TableModel, siga os links na minha assinatura. Eles possuem explicações detalhadas de como fazer.

Bem facil
Onde define minha tabela modelo como “dtm”

DefaultTableModel dtm = (DefaultTableModel)tabela.getModel();

E para pegar meus dados nessa tabela … Passando Linha e Coluna

dtm.getValueAt(row,column)

[quote=marcelohd02]Bem facil
Onde define minha tabela modelo como “dtm”

DefaultTableModel dtm = (DefaultTableModel)tabela.getModel();

E para pegar meus dados nessa tabela … Passando Linha e Coluna

dtm.getValueAt(row,column)

[/quote]

Novamente, um exemplo de como não se deve fazer. Pessoal, a recomendação sobre a criação de TableModels não está em vermelho no link da minha assinatura (e na do Mark, e no marcobiscaro, e de outros usuários do GUJ) à toa.

Não usem DefaultTableModel.

Bem nao sou programador Profissional … e ESSA POG RESOLVEU MEU PROBLEMA >> ENTAO >>>
Felicidades aqueles que querem .

Ja li este topico de nao usar a TABELMODEL . mas nao tiver tempo de estudar mais sobre isso … Topico a gente acha em todo Lugar … mas explicando Diretinho … NUNCA

o TITULO DO TOPICO É “Pegar dados de uma JTable” BLZ ELE ESTA PEGANDO … agora como o rapaz do topico esta usando a tabela … DELE … ele que sabe

[quote=marcelohd02]Bem nao sou programador Profissional … e ESSA POG RESOLVEU MEU PROBLEMA >> ENTAO >>>
Felicidades aqueles que querem .

Ja li este topico de nao usar a TABELMODEL . mas nao tiver tempo de estudar mais sobre isso … Topico a gente acha em todo Lugar … mas explicando Diretinho … NUNCA[/quote]

“Resolver” problemas e fazer POG é fácil. Programar direito é o que exige um pouco mais de estudo. É por causa de “resolvedores de problema” que sistemas falham, saem caros e ficam difíceis de manter.

Se tiver interesse de estudar o tópico e não entender direito, é só postar as dúvidas que a gente te auxilia. Só vai vale é ficar postando POG por aí como se fosse solução.

OK . foi mal… meu interesse aqui é aprender … e muito … mas tipo achei que como eu consegui de maneira facil podeira ajudar .

O problema do DefaultTableModel é o seguinte. Ele te engana.

Você rapidamente faz uma tabela aparecer na tela e, por causa disso, ele parece fácil de usar. O problema vem quando você precisa fazer um tratamento mais avançado da tabela.

Você, por exemplo, perde completamente a referência da classe com a qual você está trabalhando, ou do tipo de dados das colunas. É obrigado a fazer casts o tempo todo, já que o getValueAt sempre retorna o tipo Object. A cópia do seu objeto para o model consome processamento, e também ocupa o dobro de memória.

Em resumo, é um jeito fácil que sai difícil, ocupa memória e é caro em termos de processamento.

1 curtida

VLw aew marcelohd02 entendi perfeitamente o q vc me mandou, sua ajuda tbm foi mto boa Viny, tô estudando o modelo de table q vc postou aqui, mas por enquanto vou usar o “mais fácil” rsrsrsrs
vlw!

Melhor apreender da maneira mais Dificl … hehehe

Por que perder tempo?

[quote=ViniGodoy][quote=lokit"s]vc usa

jtable.getValueAt(int coluna, int linha);  

[/quote]

Se você usa esse método, então é porque não sabe trabalhar com o JTable corretamente.

Para pegar um dado de um JTable, você pergunta para o model. A JTable é dividida, basicamente, em duas partes importantes:

  1. O JTable, que faz a exibição dos dados;
  2. O TableModel, que fiz ao JTable que dados serão exibidos.

Para usar um JTable direito, você obrigatoriamente deve saber como construir um TableModel, filho de AbstractTableModel. É ele que vai descrever os valores para o JTable, e é ele que vai retornar a você os valores que estão sendo exibidos.

Então, vamos supor que sua tabela contenha dados de clientes. O comando para pegar um desses dados e exibir no JTextField é:

Cliente cliente = modelClientes.get(row); txtNomeCliente.setText(cliente.getNome());

Onde row é a linha que você quer obter o valor e modelClientes é um objeto do tipo ClienteTableModel, escrito por você. Obter qual linha está selecionada é um atributo da visão. Então, nesse caso, você realmente usa um dos métodos “getSelected” que o colega descreveu acima.

Se você ainda não sabe fazer seu próprio TableModel, siga os links na minha assinatura. Eles possuem explicações detalhadas de como fazer.[/quote]

Obrigado pela solução. Simples e bem clara. Me ajudou muito.