Problema ao inserir novo registro

6 respostas
R

Bom dia pessoal,
estou com o seguinte problema, toda vez que eu insiro um novo registro em um array, ao invés dele ser inserido no índice correto, ele é inserido em todos os índices anteriores ao que eu quero inserir.
Abaixo segue o código do botão inserir que está dentro do método actionPerformed.

if (e.getSource() == btSalvar) {

fun.setNome(tNome.getText());

fun.setEndereco(tEndereco.getText());

fun.setSalario(Float.parseFloat(tSalario.getText()));

if (opc == 1) {

fun.setExameMedico(tsExameMedico.getText());

fun.setIdade(Integer.parseInt(tsIdade.getText()));

fun.setTitulo(Integer.parseInt(tsTitulo.getText()));

fun.setnDependentes(Integer.parseInt(tsnDependentes.getText()));

// Quando é Sócio e não Médico incere 0 nos campos de Médico

fun.setCRM(0);

fun.setTelEmergencia(0);

fun.setDiagnostico(0);

fun.setReceita(0);

} else if (opc == 2) {

fun.setCRM(Integer.parseInt(tmCRM.getText()));

fun.setTelEmergencia(tmTelEmergencia.getText());

fun.setDiagnostico(tmDiagnostico.getText());

fun.setReceita(tmReceita.getText());

// Quando é Médico e não Sócio incere 0 nos campos de Sócio

fun.setExameMedico(0);

fun.setIdade(0);

fun.setTitulo(0);

fun.setnDependentes(0);

} else if (opc == 3) {

fun.setExameMedico(tsExameMedico.getText());

fun.setIdade(Integer.parseInt(tsIdade.getText()));

fun.setTitulo(Integer.parseInt(tsTitulo.getText()));

fun.setnDependentes(Integer.parseInt(tsnDependentes.getText()));

fun.setCRM(Integer.parseInt(tmCRM.getText()));

fun.setTelEmergencia(tmTelEmergencia.getText());

fun.setDiagnostico(tmDiagnostico.getText());

fun.setReceita(tmReceita.getText());

}

funcionario[total] = fun;// Copia para o array

total++;

lNumTotal.setText(Integer.toString(total));// atualiza o JLabel

// Total

LimpaCampos();

for (int i = 0; i < total; i++) {// imprime o campo nome de todos os

// registros a cada inserir dado

System.out.println(funcionario[i].getNome());

}

JOptionPane.showMessageDialog(null, Salvo com Sucesso!);
}

6 Respostas

foxpv

Você poderia, por favor, colocar o código dentro da tag [code]. Ajudaria bastante o pessoal entender o seu código pra poder te ajudar. Abraços.

R
Desculpe pessoal, mas aqui esta o código postado corretamente.
if (e.getSource() == btSalvar) {
			fun.setNome(tNome.getText());
			fun.setEndereco(tEndereco.getText());
			fun.setSalario(Float.parseFloat(tSalario.getText()));
			if (opc == 1) {
				fun.setExameMedico(tsExameMedico.getText());
				fun.setIdade(Integer.parseInt(tsIdade.getText()));
				fun.setTitulo(Integer.parseInt(tsTitulo.getText()));
				fun.setnDependentes(Integer.parseInt(tsnDependentes.getText()));
				// Quando é Sócio e não Médico incere 0 nos campos de Médico
				fun.setCRM(0);
				fun.setTelEmergencia("0");
				fun.setDiagnostico("0");
				fun.setReceita("0");
			} else if (opc == 2) {
				fun.setCRM(Integer.parseInt(tmCRM.getText()));
				fun.setTelEmergencia(tmTelEmergencia.getText());
				fun.setDiagnostico(tmDiagnostico.getText());
				fun.setReceita(tmReceita.getText());
				// Quando é Médico e não Sócio incere 0 nos campos de Sócio
				fun.setExameMedico("0");
				fun.setIdade(0);
				fun.setTitulo(0);
				fun.setnDependentes(0);
			} else if (opc == 3) {
				fun.setExameMedico(tsExameMedico.getText());
				fun.setIdade(Integer.parseInt(tsIdade.getText()));
				fun.setTitulo(Integer.parseInt(tsTitulo.getText()));
				fun.setnDependentes(Integer.parseInt(tsnDependentes.getText()));
				fun.setCRM(Integer.parseInt(tmCRM.getText()));
				fun.setTelEmergencia(tmTelEmergencia.getText());
				fun.setDiagnostico(tmDiagnostico.getText());
				fun.setReceita(tmReceita.getText());
			}
			funcionario[total] = fun;// Copia para o array
			total++;
			lNumTotal.setText(Integer.toString(total));// atualiza o JLabel
														// Total
			LimpaCampos();
			for (int i = 0; i < total; i++) {// imprime o campo nome de todos os
												// registros a cada inserir dado
				System.out.println(funcionario[i].getNome());
			}
			JOptionPane.showMessageDialog(null, "Salvo com Sucesso!");

		}
B

Você está esquecendo de dar um fun = new Funcionario(); antes de usá-lo novamente.

R

Nossa Funcionou :lol:

mas por que acontecia isso?
Tem como você me explicar?

PS: Obrigado pela ajuda.

foxpv

Isso aí, você está sempre usando a mesma referência para o objeto Funcionário.

R

Hmm, era esse o problema.

Obrigado pela ajuda gente.

até mais.

Criado 10 de novembro de 2008
Ultima resposta 10 de nov. de 2008
Respostas 6
Participantes 3