Java saját szoftver készítése 8. rész – Értesítő ablakok

Írtam egy saját ErrorDialog osztályt, hogy a hibaellenőrzések során kapott problémákat meg tudjam jeleníteni. Aztán most eszembe jutott, hogy a StudiCore képzésében is volt szó ezekről az értesítő ablakokról, így a saját osztályra nem lesz szükség.

Ezek használata sokkal kényelmesebb, szabványosabb lesz a kód, és már egy csomó dolgot megírtak előttem, amit csak fel kell használnom:

Hibaellenőrzés

Az újonnan felvitt adatokat vagy a szerkesztés után frissítendő adatokat egy fieldCheck() metódussal ellenőrzöm. Ez most épp a munkatársak adatait kezelő EmployeeDetailsDialog ellenőrzője, még korántsem teljes, de egyelőre jó lesz a bevitt adatok ellenőrzésére:

private boolean fieldCheck() {
   boolean back = true;
   String errorMessage = "A következő hibákat találtam a kitöltés közben: \n";
   try {
      Double.parseDouble(rateField.getText());
   } catch (NumberFormatException ex) {
      back = false;
      errorMessage += "- A vállalási ár csak számokat tartalmazhat.\n";
   }

   if (nameField.getText().equals("")) {
      back = false;
      errorMessage += "- A név mező nem lehet üres.\n";
   }

   if (rateField.getText().equals("")) {
      back = false;
      errorMessage += "- A vállalási ár mező nem lehet üres.\n";
   }

   if (emailField.getText().equals("")) {
      back = false;
      errorMessage += "- Az email mező nem lehet üres.\n";
   } else {
      if (!emailField.getText().contains("@")) {
         back = false;
         errorMessage += "- Az email cím hibásnak tűnik, mert nem tartalmaz @ jelet.\n";
      }
   }

   this.errorMessage = errorMessage;
   return back;
}

Egymás után ellenőrzöm a mezők tartalmát, ha bármelyik hibás, akkor a logikai változót hamisra állítom, az errorMessage változót pedig bővítem egy újabb üzenettel.

Dialógusablak feldobása

Az EmployeeDetailsDialog ablak elküldése a Küldés gombbal történik, erre van felfűzve a hibaellenőrzés is.

private void sendButtonActionPerformed(java.awt.event.ActionEvent evt) {
   if (!fieldCheck()) {
      JOptionPane.showMessageDialog(new javax.swing.JDialog(), errorMessage, "Hiba a kitöltés során!", JOptionPane.ERROR_MESSAGE);
   } else {
      JOptionPane.showMessageDialog(new javax.swing.JDialog(), "Az adatok sikeresen elmentésre kerültek.");
      this.dispose();
   }
}

Ha hibát találok, akkor egy hibaablakot dobok fel a hibalistával, ami így néz ki:

hibaablak.jpg

Ha nem találok hibát, akkor pedig egy megerősítő ablakkal megmondom, hogy elmentettem az adatokat, mert szerintem elég idegesítő, ha nincs semmilyen visszajelzés egy programban. Ezután pedig visszaadom a vezérlést az EmployeeDetailsDialog-ot meghívó programrésznek.

megerositoablak.jpg

Frissítés: Na miután folytatom a programozást, rájöttem, hogy a hibaellenőrzés lehetne jobb is. A vállalási ár mezőt kétszer ellenőrzöm, amelyet inkább úgy kéne, hogy megnézni, nem-e üres a vállalási ár mező. Ha igen, akkor hibaüzenet. Ha nem, akkor megnézni, hogy csak számot tartalmaz-e. Ha nem, akkor hibaüzenet. Ez egymásba ágyazott feltételvizsgálat.

Persze a legjobb itt majd egy RegEx vizsgálat lesz, azzal egy lépésben lehet ellenőrizni a mező értékét. A RegEx az kezdő programozóként jó nehéz, a StudiCore ezzel foglalkozó részével is elszórakoztam több hetet, de amint az utolsó simításokat végzem a programon, visszatérek erre a problémára is, és kitalálom a megfelelő RegEx kifejezést.

Szólj hozzá!