Java - JTextField + Document + Datumseingabe + Bitte helft mir =)

Moin,

die Lösung über reguläre Ausdrücke erscheint mir auch erheblich aufwendiger zu sein.
Da oben erwähnte Pattern:
pattern = "(-?)([0-9]{1,2})\\.([0-9]{1,2})\\.([0-9]{4})";
hat auch zudem den Nachteil, dass es Eingaben wie bspw. 55.55.5555 erlauben würde, was ja sicher nicht im Sinne des Erfinders :p !!

Das Problem ist dabei, dass bspw. beim Tag oder auch Monat in Abhängigkeit der ersten Ziffer ggf. die zweite im Bereich eingeschränkt werden müsste!
Also: erste Ziffer des Monats = 1, dann darf die zweite Ziffer allenfalls aus {0,1,2} kommen (für Okt.- Dez.) usw.

Allerdings ist mir so aus dem Stand nicht klar, wie das mit einen REGEX gelöst werden könnte ....

Gruß
Klaus
 
Ja, ist mir ja wie eben gesagt auch aufgefallen, dass es sehr aufwändig ist mit RegEx...
Es wäre schon machbar, aber so ein Gefriemel, dass es gerade beim manuellen Parsen des Strings bleiben könnte. Das erste Pattern von mir war auch einfach nur ein Beispiel, dass ich aus dem Stehgreif hingeschrieben habe, ungetestet und undurchdacht.

Eigentlich bräuchte es für sowas eine Klasse, die sowohl den MaskFormatter bereitstellt und auch die eintragbaren Datumswerte anhand der bereits eingetragenen Werte mit Hilfe von GregorianCalendar o.Ä. festlegt, usw.
Vermutlich hab ich mich deshalb damals für einen grafischen Kalender entschieden, um Datums-Werte auszuwählen...

Auf textueller Basis bleibt da fast nur ein manuelles Parsen.

Gruß
miffi
 
Ja, ist mir ja wie eben gesagt auch aufgefallen, dass es sehr aufwändig ist mit RegEx...
Es wäre schon machbar, aber so ein Gefriemel, dass es gerade beim manuellen Parsen des Strings bleiben könnte. Das erste Pattern von mir war auch einfach nur ein Beispiel, dass ich aus dem Stehgreif hingeschrieben habe, ungetestet und undurchdacht.

Eigentlich bräuchte es für sowas eine Klasse, die sowohl den MaskFormatter bereitstellt und auch die eintragbaren Datumswerte anhand der bereits eingetragenen Werte mit Hilfe von GregorianCalendar o.Ä. festlegt, usw.
Vermutlich hab ich mich deshalb damals für einen grafischen Kalender entschieden, um Datums-Werte auszuwählen...

Auf textueller Basis bleibt da fast nur ein manuelles Parsen.

Gruß
miffi

Das sehe ich genauso!
Entweder den gesamtenString zeichenweise durchlaufen und jedes Zeichen einzeln auf Korrektheit (im Kontext) prüfen oder gleich die erwähnte Kalenderfkt. nutzen :p

Gruß
Klaus
 
Hi,

find ich gut das ihr euch so intensiv mit dem Thema beschäftigt ;)!!

mir ist dann auch noch aufgefallen das durch meine angesetzte "Lösung" ein Datum wie 31.02.2009 akzeptiert wird. Das ist ja auch nicht Sinn der Sache =(..
Hab nun einen Lösungsweg angeschlagen indem ich nicht sofort bei der Eingabe kontrolliere ob das Datum richtig sein "könnte". Hab die DocumentKlasse die überschrieben wird etwas abgespeckt und lasse nur eine eingabe von Ziffern sowie punkten und Bindestrichen zu und prüfe durch eine andere Funktion das Datum auf die "wirkliche" Richtigkeit.. also ob das eingegebene Datum auch wirklich existiert. Ich denke wenn ich das noch ein bsschen ausbaue dann komm ich auf ein ähnliches Ergebnis welches vorgelegt wurde =)!!

sobald ich Fertig bin melde ich mich hier dann wieder ;)!!

Ich geh nun erstmal in die "mittagspause" wenn auch etwas verspätet xD!!

Gruss Sirial
 
Das würde ich an deiner Stelle auch machen... Die Syntax zur Laufzeit der Eingabe überprüfen, beim Abschluss der Eingabe das Datum selbst. Ist einfach sinnvoller bei einer derartigen Validierung.

Gruß
miffi

P.S.: Bin auch grad erst zur Mittagspause gekommen ;)
 
So hab nun eine Lösung:

Ist zwar nicht die Perfekteste aber nunja ich glaub es ist kaum machbar eine genaue eingabe eines Datums während des Eingebens zu ermöglichen.

Ich ich prüfe nun in meinem Programm während des startens der Suche auf die Richtigkeit des Datums. Damit ist auch gewährt, dass bei einem Datum wie "31.02.2009" eine Meldung erscheint das dies kein gültiges Datum ist. Nebenbei lass ich dann noch das Dokumet über das Textfield laufen in dem Automatisch die Punkte bei einem DatumsFormat von dd.mm.yyyy gesetzt werden und nur eine eingabe von Bindestrichen (für meine -1,-2,-3 usw. Methode), Punkten und Zahlen genemigt wird. Bei Falscher Datumseingabe wird die Schrift im Textfield dann noch Rot ;). und eingaben wie "1.1.09" werden durch eine weitere Methode (die mit -1 und -2..) in ein Gültiges Datums umgewandelt und dann noch einmal geprüft..

Ich denke somit kann ich meinem Auftragsgeber eine Benutzerfreundliche Datumseingabe zum Suchen in der Datenbank bieten =)!!

Ich danke dennoch allen für Ihre Tipps und Ihre Hilfestellung ;)!!



Gruß Sirial
 
Zurück