Problema ao inserir novo registro

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!”);

	}

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.

Desculpe pessoal, mas aqui esta o código postado corretamente.

[code]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!”);

	}

[/code]

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

Nossa Funcionou :lol:

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

PS: Obrigado pela ajuda.

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

Hmm, era esse o problema.

Obrigado pela ajuda gente.

até mais.