Guten Morgen,
ich schlage mich momentan mit einem Problem herum, dessen Ursache ich einfach nicht finde. Ich benötige für ein Projekt zwei Typen von FormattedTextFields. Einmal für die Darstellung eines Datums und einmal für Währungen.
Das Feld für die Währungen funktioniert einwandfrei. Formatiert alles richtig, solange ein € - Zeichen hinter der Eingabe steht und kein Buchstabe eingegeben wurde.
Versuche ich das gleiche mit meinem Datumsfeld, verhält sich das Feld sehr seltsam. Zuerst mal der Code, danach beschreibe ich, was sich da tut.
Beim Starten des Testprogramms wird das aktuelle Datum in das Datumsfeld geschrieben. Heute zB der 28.03.2018. Ändere ich nun nur die Jahreszahl von 2018 auf 2017 und verlasse das Feld mittels TAB oder klicke auf das Währungsfeld, erscheint im Datumsfeld nicht der 28.03.2017, sondern der 02.01.2017.
Weitere Beispiele:
22.10.2015 -> 29.12.2015
25.04.2012 -> 02.01.2012
19.09.1993 -> 04.01.1993
Verstehe das Ganze nicht so richtig. Normalerweise sollte doch mittels der Zeile setFocusLostBehavior festgelegt werden, dass wenn ein gültiger Datumswert drinsteht, dieser übernommen wird. Falls die falsche Formatierung oder Buchstaben enthalten wären, würde auf den letzten gültigen Wert zurückgeschaltet.
Hat hier jemand einen Tipp für mich?
ich schlage mich momentan mit einem Problem herum, dessen Ursache ich einfach nicht finde. Ich benötige für ein Projekt zwei Typen von FormattedTextFields. Einmal für die Darstellung eines Datums und einmal für Währungen.
Das Feld für die Währungen funktioniert einwandfrei. Formatiert alles richtig, solange ein € - Zeichen hinter der Eingabe steht und kein Buchstabe eingegeben wurde.
Java:
NumberFormat nf = NumberFormat.getCurrencyInstance();
NumberFormatter nff = new NumberFormatter(nf);
DefaultFormatterFactory currencyfactory = new DefaultFormatterFactory(nff);
formattedTextField2.setFormatterFactory(currencyfactory);
formattedTextField2.setFocusLostBehavior(JFormattedTextField.COMMIT_OR_REVERT);
formattedTextField2.setValue(00.00);
Versuche ich das gleiche mit meinem Datumsfeld, verhält sich das Feld sehr seltsam. Zuerst mal der Code, danach beschreibe ich, was sich da tut.
Java:
DateFormat df = new SimpleDateFormat("dd.MM.YYYY");
DateFormatter dateFormatter = new DateFormatter(df);
DefaultFormatterFactory datefactory = new DefaultFormatterFactory(dateFormatter);
formattedTextField1.setFormatterFactory(datefactory);
formattedTextField1.setFocusLostBehavior(JFormattedTextField.COMMIT_OR_REVERT);
formattedTextField1.setValue(new Date());
Beim Starten des Testprogramms wird das aktuelle Datum in das Datumsfeld geschrieben. Heute zB der 28.03.2018. Ändere ich nun nur die Jahreszahl von 2018 auf 2017 und verlasse das Feld mittels TAB oder klicke auf das Währungsfeld, erscheint im Datumsfeld nicht der 28.03.2017, sondern der 02.01.2017.
Weitere Beispiele:
22.10.2015 -> 29.12.2015
25.04.2012 -> 02.01.2012
19.09.1993 -> 04.01.1993
Verstehe das Ganze nicht so richtig. Normalerweise sollte doch mittels der Zeile setFocusLostBehavior festgelegt werden, dass wenn ein gültiger Datumswert drinsteht, dieser übernommen wird. Falls die falsche Formatierung oder Buchstaben enthalten wären, würde auf den letzten gültigen Wert zurückgeschaltet.
Hat hier jemand einen Tipp für mich?