Zuerst erstellt man sich ein Panel mit den gewünschten Feldern und macht diese Felder Public. Wichtig beim Erzezgen des Panels ist es, dass für jedes Feld das validiert werden soll ein Componentenname eingegeben wird.
Anschließend muss das Erzeugte Panel angelegt werden und in das ValidationPanel eingehängt werden. Im nachfolgenden Beispiel werden alle Felder außer dem PLZ Feld darauf überprüft, ob sie leer sind. In diesem Fall wird ein Fehler ausgegeben. Außerdem wird ein Fehler ausgegeben, wenn das PLZ Feld nicht nur aus Zahlen besteht.
PersonalPanel inner = new PersonPanel(); ValidationPanel panel = new ValidationPanel(); panel.setInnerComponent(inner); SwingValidationGroup group = (SwingValidationGroup) panel.getValidationGroup(); group.add(inner.name, StringValidators.REQUIRE_NON_EMPTY_STRING); group.add(inner.surname, StringValidators.REQUIRE_NON_EMPTY_STRING); group.add(inner.place, StringValidators.REQUIRE_NON_EMPTY_STRING); group.add(inner.street, StringValidators.REQUIRE_NON_EMPTY_STRING); group.add(inner.phone, StringValidators.REQUIRE_NON_EMPTY_STRING); group.add(inner.plz, StringValidators.REQUIRE_VALID_INTEGER);
Wenn man dieses ValidationPanel verwendet, sieht das Ergebnis wiefolgt aus.
//Fehler bei leerem Feld StringValidators.REQUIRE_NON_EMPTY_STRING //Fehler wenn kein Int Value StringValidators.REQUIRE_VALID_INTEGER //Fehler wenn kein E-Mail Format StringValidators.EMAIL_ADDRESS //Fehler wenn das File keine Directory ist StringValidators.FILE_MUST_BE_DIRECTORY //Fehler wenn File kein File is StringValidators.FILE_MUST_BE_FILE //Fehler wenn File nicht existiert StringValidators.FILE_MUST_EXIST //Fehler wenn das File existiert StringValidators.FILE_MUST_NOT_EXIST //Fehler wenn kein Hostname StringValidators.HOST_NAME //Fehler wenn keine Hostname oder keine IP-Adresse StringValidators.HOST_NAME_OR_IP_ADDRESS //Fehler wenn keine IP-Adresse StringValidators.IP_ADRESS //Fehler wenn kein JAVA Paketname StringValidators.JAVA_PACKAGE_NAME //Fehler wenn ein String mit einem Punkt endet StringValidators.MAY_NOT_END_WITH_PERIOD //Fehler wenn mit Zahl anfängt StringValidators.MAY_NOT_START_WITH_DIGIT //Fehler wenn es Leerzeichen gibt StringValidators.NO_WHITESPACE //Fehler wenn String eine Javastichwort enthält StringValidators.REQUIRE_JAVA_IDENTIFIER //Fehler wenn Feld leer StringValidators.REQUIRE_NON_EMPTY_STRING //Fehler wenn Zahl negativ StringValidators.REQUIRE_NON_NEGATIVE_NUMBER //Fehler wenn kein gültiger Dateiname StringValidators.REQUIRE_VALID_FILENAME //Fehler wenn ungültige Zahl (int) StringValidators.REQUIRE_VALID_INTEGER //Fehler wenn ungültige Zahl (double, float) StringValidators.REQUIRE_VALID_NUMBER //Fehler wenn keine gültige URL StringValidators.URL_MUST_BE_VALID //Fehler wenn ungültige Zahl (hexadecimal) StringValidators.VALID_HEXADECIMAL_NUMBER
public class ValidationUtil { private ValidationUtil() { } /** * Erzeugt einen Dialog mit Validation Support der über den NetBeans * DialogDisplayer angezeigt werden kann. * * Bsp: JPanel panel = new JPanel(); ... //setup panel * * ValidationPanel vp = new ValidationPanel(); vp.setInnerComponent(panel); * * DialogDescriptor dd = ValidationUtil.createDialogDescriptor(vp, panel, * "URL"); Object ret = DialogDisplayer.getDefault().notify(dd); if * (DialogDescriptor.OK_OPTION.equals(ret)) { System.exit(0); } else { * System.exit(1); } * * @author boysetsfire * @param vp ValidationPanel * @param innerPane Inneres Panel * @param title Titel des Dialogs * @return DialogDescriptor */ public static DialogDescriptor createDialogDescriptor(ValidationPanel vp, Object innerPane, String title) { final DialogDescriptor dd = new DialogDescriptor(innerPane, title); ValidationUI okButtonEnabler = new ValidationUI() { private NotificationLineSupport nls = dd.createNotificationLineSupport(); @Override public void showProblem(Problem problem) { if (problem != null) { Severity severity = problem.severity(); if (severity.equals(Severity.FATAL)) { nls.setErrorMessage(problem.getMessage()); dd.setValid(false); return; } if (severity.equals(Severity.WARNING)) { nls.setErrorMessage(problem.getMessage()); dd.setValid(true); return; } nls.setInformationMessage(problem.getMessage()); } else { nls.clearMessages(); dd.setValid(true); } } @Override public void clearProblem() { showProblem(null); } }; vp.getValidationGroup().addUI(okButtonEnabler); vp.getValidationGroup().performValidation(); return dd; } }