Textfeld für Datum...

kleiner_floh

Mitglied
Hallo liebe Leute,

mal meine erste Frage hier und die ist gleich ein bisschen komplexer...

...meine Aufgabe ist es mit Swt ein Textfield zu erstellen, welches nur Datum im Format

tt.mm.jjjj wiedergeben kann. Das Textfeld soll von Beginn an leer sein, und die "." nach tt und mm sollen automatisch gesetzt werden.

Ich habe inzwischen schon viel probiert, aber irgendwie verzweifel ich langsam! :'-(

Vielleicht habt ihr ja eine gute Idee oder ein Muster anhand ich das entwickeln kann. Vielen Dank

Floh
 
Heyho...

ich würd es wohl auch nicht hinbekommen, einen Tipp hätte ich jedoch!
Wenn du dem Textfeld einen KeyListener hinzufügst und die Methode keyPressed verwendest, kannst du einen zähler hochzählen, der nach 2x drücken einen "." hinzufügt :)

Viel Glück!
 
So kannst du die Punkte automatisch setzen lassen und sicherstellen dass nur Zahlen eingegeben werden. Musst dann nur noch prüfen dass das eingegebene Datum auch korrekt ist. z.B. dürfen an erster Stelle nur Zahlen von 0-3 stehen und an zweiter nur von 0-1 wenn die erste schon eine 3 ist.

Am Ende musst du noch das gesamte Datum prüfen und wenn es dieses nicht gibt das entsprechend markieren vllt.

Java:
	public static void main(String[] args) {
		final Display display = new Display( );
		final Shell shell = new Shell(display);
		shell.setLayout(new FillLayout( ));
		Text text = new Text(shell, SWT.NONE);
		text.setTextLimit(10);
		text.addVerifyListener(new VerifyListener( ) {

			@Override
			public void verifyText(VerifyEvent evt) {
				if (Character.isIdentifierIgnorable(evt.character)) {
					return;
				}
				if (!Character.isDigit(evt.character)) {
					evt.doit = false;
					return;
				}

				if (evt.start == 1 || evt.start == 4) {
					evt.text += ".";
					evt.start += 1;
					evt.end += 1;
				}
			}

		});

		shell.pack( );
		shell.open( );
		while (!shell.isDisposed( )) {
			if (!display.readAndDispatch( )) {
				display.sleep( );
			}
		}
		display.dispose( );
	}
 
Also ich bin wirlich beieindruckt und super dankbar Das mt der Datumsüberprüfung bekomm ich dann hoffentlich alleine hin :D
Aber wenn jemand eine gute idee hat, bin ich natürlich immer dankbar...

Vielen lieben Dank
 
Zuletzt bearbeitet:
Versuchs doch mal selber oder sag wo dein Problem ist oder so....

Ich lös dir hier nicht einfach alles, davon lernste gar nichts.
 
also das Problem liegt darin, eine Abfrage zu erstellen, mit der ich sozusagen auslese das die ersten zwei Ziffern für die Tage nicht größer wie 31 sind, sprich das Datumsformat. Da ich noch nicht herausgefunden habe, wie ich die jeweiligen stellen aus dem Textfield auslesen kann. Naja und dann muss ich das ganze ja nur noch für die Monate und das Jahr anpassen.

nehme auch gerne tipps per icq an...
 
Den Text vom Textfeld bekommst du mit ((Text)evt.widget).getText() und den neu eingegebenen mit evt.text. Das zusammen ergibt dann alles was dort erscheinen wird. Daraus machste nen String und holst dir die ersten beiden Stellen mit getSubstring(0,2) z.B.
 
Und wie und wo muss ((Text)evt.widget).getText() und evt.text anwenden?

Ich glaube ich stelle mich im moment wohl etwas dumm an, aber bin im Moment total planlos...
 
Probieren geht über studieren. Ich studier das und vorm Studium hab ichs mit probieren rausgefunden.

Kopiers doch mal irgenwo hin in den Sourcecode. An sovielen Stellen kompiliert es nicht.

Wenn es kompiliert lass es dir mit System.out.println ausgeben.

Achja und Zahlen aus einem String bekommst du mit Integer.parseInt(String s).
 

Neue Beiträge

Zurück