Pegar dados de uma JTable

12 respostas
E

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!

12 Respostas

L

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!

V

lokit"s:
vc usa

jtable.getValueAt(int coluna, int linha);

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.

M

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)
V

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)

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.

M

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

V

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

“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.

M

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

V

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.

E

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!

M

Melhor apreender da maneira mais Dificl … hehehe

V

Por que perder tempo?

F

ViniGodoy:
lokit"s:
vc usa

jtable.getValueAt(int coluna, int linha);

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.

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

Criado 19 de agosto de 2010
Ultima resposta 24 de ago. de 2013
Respostas 12
Participantes 5