Me gustaría controlar antes del cierre de un formulario si hay cambios en él y preguntar mediante un JoptionPane si se esta seguro de cerrar.
En los formularios añado una barra superior de accesos rápidos para moverme entre los diferentes formularios llamada cBarra. Por ese motivo necesito sobrescribir el metodo dispose para poder controlar el evento desde otra clase mediante formulario.dispose().
El codigo que tengo en el formulario es:
Código PHP:
private boolean verificar_cerrar_formulario (){
cPersona p1 = new cPersona (); //Dades formulari
cControlar_format cf = new cControlar_format ();
// Obtenemos el mismo registro que tenemos en el formulario
p1 = p1.obtenir_cPersona(p1, persona.getId_persona());
// Modificamos los registros mostrados en el formulario
p1.setDireccio(cf.arreglar_apostrofs(txt_direccio.getText()));
p1.setProvincia(cbx_provincia.getSelectedItem().toString());
p1.setPoblacio(cbx_poblacio.getSelectedItem().toString());
p1.setCodi_postal(txt_codi_postal.getText());
p1.setTelefon1(txt_tel1.getText());
p1.setTelefon2(txt_tel2.getText());
p1.setMail(cf.arreglar_apostrofs(txt_mail.getText()));
return p1.equals(persona);
}
@Override
public void dispose(){
boolean comp_persona;
comp_persona = verificar_cerrar_formulario ();
if(comp_persona == true){ //Es igual
this.dispose();
}else{ // Es diferent
cJOptionPane op = new cJOptionPane ();
int confirmado = JOptionPane.showConfirmDialog(this,op.getMensajeCerrarFormulario(),op.getSeleccionOpcion(), JOptionPane.OK_OPTION);
if (JOptionPane.OK_OPTION == confirmado){ //Lo sé y me da igual
this.dispose();
}
}
}
El problema lo tengo que al confirmar de cerrarlo me entra en un bucle de mostrar el mensaje puesto que invoco al mismo metodo una y otra vez.
Alguien me puede echar una mano?
Gracias