Hallo,
ich bin Java Anfänger und schreibe gerade ein Programm in dem ich Textfelder benutze in dem ein Datum eingegeben wird um eine suche zu starten. Um die Datumseingaben festzulegen und zu begrenzen damit nicht irgendein Blödsinn eingegeben werden kann, benutze ich ein Document welches ich auf das Textfeld setzte. (verbessert mich gerne wenn ich da etwas falsch versteh
).
das Datum hat ein Format dd-mm-yyyy. Außerdem kann auch -1 (für gestern) und -2 (für vorgestern) eingegeben werden (berechnet wird dies in einer anderen Klasse um die geht es hier aber gerade nicht).
Mein Problem ist jetzt, das ich soweit meine eingabe ganz gut begrenzt habe. Jedoch wenn ein Datum eingegeben wurde und man sich evtl verschrieben hat (anstatt den 14-10 wollte man den 04-10 schreiben) und man mit dem Kürser zu dieser stelle geht um dies zu verbessern kann man die eingabe zwar löschen jedoch nix neues mehr eintragen. Das Datum muss erst komplett wieder gelöscht werden um eine neue Eingabe machen zu können. Mir ist klar das ich irgendwie die schleifen umbauen oder was einbauen muss aber ich probiere schon seit stunden daran und komm einfach an keine lösung =(
Da ich jedes mal wenn ich probleme habe hier im Forum gucke und mir bist jetzt immer wunderbest durh bestehnde beiträge geholfen wurde frage ich euch ob ihr mir evtl weiterhelfen könntet =)!! das wäre nett
bräuchte eine Löscung wenn möglich bis Freitag =)!!
Vielen Dank im Voraus
Mit freundlichen Grüßen
Sirial
hier mein Code:
ich bin Java Anfänger und schreibe gerade ein Programm in dem ich Textfelder benutze in dem ein Datum eingegeben wird um eine suche zu starten. Um die Datumseingaben festzulegen und zu begrenzen damit nicht irgendein Blödsinn eingegeben werden kann, benutze ich ein Document welches ich auf das Textfeld setzte. (verbessert mich gerne wenn ich da etwas falsch versteh

das Datum hat ein Format dd-mm-yyyy. Außerdem kann auch -1 (für gestern) und -2 (für vorgestern) eingegeben werden (berechnet wird dies in einer anderen Klasse um die geht es hier aber gerade nicht).
Mein Problem ist jetzt, das ich soweit meine eingabe ganz gut begrenzt habe. Jedoch wenn ein Datum eingegeben wurde und man sich evtl verschrieben hat (anstatt den 14-10 wollte man den 04-10 schreiben) und man mit dem Kürser zu dieser stelle geht um dies zu verbessern kann man die eingabe zwar löschen jedoch nix neues mehr eintragen. Das Datum muss erst komplett wieder gelöscht werden um eine neue Eingabe machen zu können. Mir ist klar das ich irgendwie die schleifen umbauen oder was einbauen muss aber ich probiere schon seit stunden daran und komm einfach an keine lösung =(
Da ich jedes mal wenn ich probleme habe hier im Forum gucke und mir bist jetzt immer wunderbest durh bestehnde beiträge geholfen wurde frage ich euch ob ihr mir evtl weiterhelfen könntet =)!! das wäre nett

Vielen Dank im Voraus
Mit freundlichen Grüßen
Sirial
hier mein Code:
Code:
class DateDocument extends PlainDocument {
public void insertString(int offs, String str,
AttributeSet a)
throws BadLocationException {
// Überprüfen, ob nur Zahlen und Bindestriche eingegeben werden
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c != '-' && (c < '0' || c > '9'))
return;
}
String text = getText(0, getLength())+str;
// genemigt das ein "-" am anfang eingegebn werden kann
if (text.length() == 1){
if (text.equals("-")){
super.insertString(offs, str, a);
return;
}
}
// genemigt dann auch die -1 oder -2
if (text.length() == 2){
if (text.equals("-1") || (text.equals("-2"))){
super.insertString(offs, str, a);
return;
}
if (text.startsWith("-")){
return;
}
}
// fehler abfangen
if (text.length() >2){
if (text.startsWith("-1") || text.startsWith("-2")){
return;
}
}
// 1. Stelle Tag
if (text.length () > 0)
if (Integer.parseInt(text.substring(0, 1)) > 3)
return;
// Tag
if (text.length () >= 2 ) {
if (text.endsWith("-")){
return;
}
int date = Integer.parseInt(text.substring(0, 2));
if (date < 1 || date > 31)
return;
}
// Zweiter .
if (text.length() >= 3){
if (text.charAt(2) != '-')
return;
}
// 1. Stelle Monat
if (text.length() >= 4)
if (text.charAt(3) != '0' &&
text.charAt(3) != '1')
return;
// Monat
if (text.length() >= 5) {
int month = Integer.parseInt(text.substring(3, 5));
if (month == 0 || month > 12)
return;
}
// Dritter .
if (text.length() >= 6){
if (text.charAt(5) != '-')
return;
}
if (text.length() == 7){
if (text.endsWith("-")){
super.insertString(offs, str, a);
return;
}
}
// Maximale Länge
if (text.length() > 10)
return;
// Striche einbauen
if (text.length() == 2 || text.length() == 5)
str += "-";
// Wenn die Eingabe korrekt ist,
// kann die super-Methode aufgerufen werden
super.insertString(offs, str, a);
}
}