Í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:

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.

Vélemény, hozzászólás?