Í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:
Tartalomjegyzék
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:
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.
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.