Recuperar linha selecionada de JTable

Prezados,
após longa pesquisa para implementar um JTable, cheguei num ponto que preciso de ajuda.
Preciso simplesmente recuperar os valores da linha que eu selecionar e armazenar em alguma estrutura(array, vetor, qq coisa) e depois mostrar esses dados nos campos da tela, ou seja, o problema está em pegar os dados da linha selecionada.

Já fui em dezenas de fóruns e não consegui implementar como recuperar os valores da linha.
Li em algum lugar que há outra implementação pra não ter tantos métodos vazios, como abaixo:

Criei uma classe pra tratar o evento

[code]class TableHandler implements MouseListener{

	@Override
	public void mouseClicked(MouseEvent e) {
	 if  (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {  
		 JDialog.setDefaultLookAndFeelDecorated(true);
		 JOptionPane.showMessageDialog(null, "Clicou com botão esquerdo", "Atenção", JOptionPane.ERROR_MESSAGE);
                     //O evento funciona <------------------------
                     //Como recuperar os dados da linha selecionada? 
	 } 

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}	
}[/code]

Trecho que salva os dados na tabela.

[code]
tabela = (DefaultTableModel)jTableAgenda.getModel();
tabela.setRowCount(0);
if(!listaAgenda.isEmpty()){
Iterator it = listaAgenda.iterator();
while(it.hasNext()){
Agenda agenda = (Agenda) it.next();
int codHor = agenda.getCodHorario();
Horario horario = TelaLogin.dBServices.obterHorarioPorChave(codHor);
Cliente cliente = TelaLogin.dBServices.obterClientePorChave(agenda.getCodCliente());
Servicos servico = TelaLogin.dBServices.obterServicosPorChave(agenda.getCodServ());
String situacao = agenda.getSituacao();
String dataAgen = DateUtil.format(agenda.getDataAg());

			Vector<Object> elementos = new Vector<Object>();
			elementos.add(dataAgen);
    		elementos.add(horario);
    		elementos.add(cliente);
    		elementos.add(servico);
    		elementos.add(situacao);	
    		
    		       		
    		tabela.insertRow(0,elementos);
		}
	}[/code]

Agradeço a atenção.

Primeiro. Não use DefaultTableModel(Novo movimento do GUJ).

Veja na minha assinatura o link para aprender mais sobre isso.

Faço minhas as palavras do Mark, afinal, eu praticamente iniciei esse movimento.

Eu vou um pouco mais longe: a menos que seja um projeto de brinquedo (que não parece ser), utilize um framework desktop pra não ficar batendo cabeça, como o genesis ou JGoodies ou whatever. Isso que você está fazendo é quase como fazer aplicação web só com jsp…

Como assim voce iniciou o movimento?
Eu que lancei uma discreta idéia no ar e o povo aderiu :stuck_out_tongue:
Mas voce é o evangelizador original, realmente, praticamente quase iniciou o movimento, e voce sempre terá seus créditos. :wink:

[quote=Mark_Ameba]Como assim voce iniciou o movimento?
Eu que lancei uma discreta idéia no ar e o povo aderiu :stuck_out_tongue:
Mas voce é o evangelizador original, realmente, praticamente quase iniciou o movimento, e voce sempre terá seus créditos. :wink:[/quote]

ahahahah.

Ok, mas o mais importante é que o povo não use o DefaultTableModel.

Realmente não é um projeto de brinquedo. Não é uma aplicação corporativa, mas é um sistema que deverá entrar em produção muito em breve.

Essa aplicação foi criada “na raça”, primeiro tentando desenhar as telas na unha, depois, vendo que era impossível, utilizo o netbeans para o desenvolvimento das telas.

Gostaria que me desse uma idéia sobre como usar esses frameworks que vc mencionou e o que está errado de acordo com sua colocação. [quote]Isso que você está fazendo é quase como fazer aplicação web só com jsp…[/quote]

Sobre não usar o DefaultTableModel, vou pesquisar, mas se puderem dar uma explanada do porque não utilizar fico grato. Lembrando que comecei a conhecer o swing “fuçando” os componentes pra criar esse sistema, ou seja, não sou um conhecedor avançado.

Um motivo já foi citado logo acima. Se você ver o link que te foi recomendado, lá explica o motivo para não usar DefaultTableModel e tem os links para exemplos da maneira certa de se fazer.

[quote=ViniGodoy]
Ok, mas o mais importante é que o povo não use o DefaultTableModel.[/quote]
Exatamente… não importa quem criou o movimento. :slight_smile:

Quando eu disse impossível, foi mais pra valorizar a dificuldade de fazer telas avançadas na mão, pois com o netbeans, é extremamente mais fácil. Com relação ao código gerado automaticamente, concordo plenamente, é muito ruim, grande e difícil de entender.

Já olhei e pesquisarei com mais calma, pois tenho várias tabelas no sistema (todas criadas no netbeans) que preciso fazer funcionar conforme o assunto do tópico.

Vlw

bom… se você utilizar o ObjectTableModel do Mark_Ameba pra você recuperar os dados da linha (que será um objeto) apenas com um getValue(linha) você consegue…
eu utilizo o ObjectTableModel mas pra buscar o valor eu pego somente o código e faço uma pesquisa no banco pra pegar os valores atualizados… (pois existem vários clientes conectados em um servidor)