@Override
 void doPropertyChange(PropertyChangeEvent evt) {
   super.doPropertyChange(evt);
   if (checkIsFieldChange(Field.NACHNAME, evt)) {
     txtNachname.setText(personModel.getNachname());
   } else if (checkIsFieldChange(Field.VORNAME, evt)) {
     txtVorname.setText(personModel.getVorname());
   } else if (checkIsFieldChange(Field.STRASSE_HAUSNUMMER, evt)) {
     txtStrasseHausnummer.setText(personModel.getStrasseHausnummer());
   } else if (checkIsFieldChange(Field.PLZ, evt)) {
     txtPlz.setText(personModel.getPlz());
   } else if (checkIsFieldChange(Field.ORT, evt)) {
     txtOrt.setText(personModel.getOrt());
   } else if (checkIsFieldChange(Field.GEBURTSDATUM, evt)) {
     // nicht alle Subklassen von Person haben ein Geburtsdatum
     if (txtGeburtsdatum != null) {
       txtGeburtsdatum.setText(asString(personModel.getGeburtsdatum()));
     }
   } else if (checkIsFieldChange(Field.FESTNETZ, evt)) {
     txtFestnetz.setText(personModel.getFestnetz());
   } else if (checkIsFieldChange(Field.NATEL, evt)) {
     txtNatel.setText(personModel.getNatel());
   } else if (checkIsFieldChange(Field.EMAIL, evt)) {
     txtEmail.setText(personModel.getEmail());
   } else if (checkIsFieldChange(Field.ANREDE, evt)) {
     // nicht alle Subklassen von Person haben eine Anrede
     if (comboBoxAnrede != null) {
       comboBoxAnrede.setSelectedItem(personModel.getAnrede());
     }
   }
 }
 private void onVornameEvent(boolean showRequiredErrMsg) {
   LOGGER.trace("PersonController Event Vorname");
   boolean equalFieldAndModelValue =
       equalsNullSafe(txtVorname.getText(), personModel.getVorname());
   try {
     setModelVorname(showRequiredErrMsg);
   } catch (SvmValidationException e) {
     return;
   }
   if (equalFieldAndModelValue && isModelValidationMode()) {
     // Wenn Field und Model den gleichen Wert haben, erfolgt kein PropertyChangeEvent. Deshalb
     // muss hier die Validierung angestossen werden.
     LOGGER.trace("Validierung wegen equalFieldAndModelValue");
     validate();
   }
 }