huhu 
Es geht um ein Textfeld, für ein Datum in der Vergangenheit. Der Benutzer ist sich gewohnt in der alten Applikation als Datum nur 03101987 einzutippen. Rauskommen soll nun ein formatiertes Datum. In diesem Beispiel also 03.10.1987. Nun habe ich einen FocusListener gebaut:
Allerdings ist diese Lösung nicht sehr optimal. Denn wenn der Benutzer nochmal in das Feld klickt und dann wieder rausgeht, wird das das Datum 03.10.1987 zu 03..1.0.19 (wegen substring). Ich fange ein solches Ergebnis ab mit der Bedingung, dass die Zeichenanzahl 8 sein muss, ansonsten wird "Ungültig" ausgegegeben.
Gibts da eine elegantere Methode, den Fehler zu handlen oder den String "03101987" in ein mit Punkten getrennten Datum auszugeben.
Es geht um ein Textfeld, für ein Datum in der Vergangenheit. Der Benutzer ist sich gewohnt in der alten Applikation als Datum nur 03101987 einzutippen. Rauskommen soll nun ein formatiertes Datum. In diesem Beispiel also 03.10.1987. Nun habe ich einen FocusListener gebaut:
Code:
public void focusLost(FocusEvent evt) {
// TODO Auto-generated method stub
Object source = evt.getSource();
if (source == erldatTextField){
String inErldat = erldatTextField.getText();
if (inErldat.length() == 8){
String day = inErldat.substring(0, 2);
String mon = inErldat.substring(2, 4);
String year = inErldat.substring(4, 8);
erldatTextField.setText(day + "." + mon + "." + year);
} else {
erldatTextField.setText("Ungülitg");
}
}
Allerdings ist diese Lösung nicht sehr optimal. Denn wenn der Benutzer nochmal in das Feld klickt und dann wieder rausgeht, wird das das Datum 03.10.1987 zu 03..1.0.19 (wegen substring). Ich fange ein solches Ergebnis ab mit der Bedingung, dass die Zeichenanzahl 8 sein muss, ansonsten wird "Ungültig" ausgegegeben.
Gibts da eine elegantere Methode, den Fehler zu handlen oder den String "03101987" in ein mit Punkten getrennten Datum auszugeben.