Problemas ao tentar pasar os Dados de um JTable para textfields de um InternalFrame

1 resposta
J

Galera Boa Noite ,Tenho uma janela com um JTable e um botão alterar,quando o úsuario clica no botão editar,pega o objeto da linha selecionada na tabela e abre um outro internalframe com os textfields preenchidos pelos dados da linha selecionada da tabela.

Esse é o código que pego a linha selecionada e passo para abrir o outro InternalFrame:

btnEditar.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent e) {
					JanelaAlterarContrato janela = new JanelaAlterarContrato();
						if(tabelaContrato.getSelectedRow() >=0) {


	                        int viewRow = tabelaContrato.getSelectedRow();
	                        Contrato selected = (Contrato) tabelaContrato.getValueAt(viewRow,0);
	                        janela.atualizarContrato(selected);
					        principal.getDesktop().add(janela);
					        janela.setVisible(true);
				}
			  }

Esse é o método atualizarContrato que pega os campos referentes ao contrato selecionado:

protected void atualizarContrato(Contrato rec) {
		campoRegistro.setText(String.valueOf(rec.getCodContrato()));
		campoTipoContrato.setSelectedItem(rec.getTipoContrato());
		campoCliente.setSelectedItem(rec.getJuridica());
		campoDataInicial.setText(formataData.format(rec.getDataInicio()));
		campoDataFinal.setText(formataData.format(rec.getDataFinal()));
		cod = rec.getCodContrato();
	}

Ao selecionar a linha e clicar no botão editar da o seguinte erro: java.lang.ClassCastException: java.lang.Long cannot be cast to projeto.basica.Contrato
O que será,sou iniciante e ainda não entendo quase nada,tenho que entregar esse projeto essa semana e já tou desesperado,que apenas está listando e cadastrando,falta editar e excluir, e a cada tentativa só da erro.
Se poderem me ajudar,Desde já agradeço,abraços

1 Resposta

AndreSI

Na linha 8 do 1º código parece que o getValueAt(viewRow,indiceDaColuna) pega apenas o valor da coluna 0, sendo que selected Contrato é um objeto com múltiplos atributos, seria correto ao menos que essa célula armazenasse esse objeto. Me parece q uma possível solução pra isso seria pegar os dados das outras colunas dessa linha(row).

Criado 2 de junho de 2013
Ultima resposta 11 de jun. de 2013
Respostas 1
Participantes 2