Java: Wie bewegt sich der Cursor automatisch von einem Textfeld zum anderen?

7

In meiner Anwendung sind vier TextArea vorhanden und ich möchte nur vier Zeichen in einen Textbereich eingeben und der Cursor bewegt sich automatisch zum nächsten TestArea. Auch wenn ich in diesem TextArea vier Zeichen eingebe, springt der Cursor automatisch wieder zum nächsten TextArea.

Beispiel: Zum Zeitpunkt der Installation von Windows XP wollen Sie "Key" und es gibt vier Abschnitte, wenn Sie im ersten Abschnitt vier Zeichen eingeben, dann bewegt sich der Cursor automatisch zum nächsten Abschnitt.

Das gleiche möchte ich in meiner Anwendung.

Zuerst füge ich CustomizedTextFields.jar hinzu und erstelle dann vier IntegerField:

%Vor%

Danach zeige ich alle diese IntegerField auf meinem Rahmen.

Jetzt habe ich diesen Code ausprobiert, um den Cursor zum nächsten Feld zu schicken, aber es funktioniert nicht:

%Vor%     
Vinit Vikash 22.03.2012, 09:14
quelle

6 Antworten

10

Interessant genug Frage zu versuchen, meine schemenhafte Kenntnis des Textpakets zu verbessern: -)

Es gibt zwei separate Anforderungen hier

  • schränkt die Länge des Textes ein: das wurde mit einem DocumentFilter gemacht, wie @mKorbel bereits bemerkt hat
  • automatisch transferFocus auf die nächste Komponente, nachdem die maximale Länge erreicht ist: stellt sich heraus, dass dies mit einem NavigationFilter
  • erledigt werden kann

im Code:

%Vor%

Der documentFilter ist derjenige aus dem Swing-Lernprogramm

    
kleopatra 22.03.2012, 11:39
quelle
6
%Vor%
  1. Fügen Sie DocumentListener zum JTextComponents , zum Anhören DocumentFilter

  2. Verwenden Sie nicht KeyListener für JTextComponents , verwenden Sie nur DocumentListener

  3. füge die nächste JTextArea zur DocumentListener hinzu, wenn dort die vierte eingegeben wird. Char in JTextArea ,

  4. Beachten Sie, dass das Verschieben mit Focus von einem JTextArea in ein anderes besser in invokeLater

  5. integriert wäre
mKorbel 22.03.2012 09:20
quelle
2
%Vor%     
Reg 22.03.2012 09:30
quelle
1

Ersetzen Sie text2.getCursor() durch text2.requestFocus() .

getCursor() dient zum Abrufen der Form des Mauszeigers beim Überfahren einer Komponente.

Mit dieser Methode ist es auch möglich, mehr als 4 Zeichen in ein Feld einzugeben, zum Beispiel durch Einfügen aus der Zwischenablage. Wenn Sie das blockieren möchten, müssen Sie überprüfen, ob der eingegebene Text länger als 4 Zeichen ist. Wenn ja, nehmen Sie nur die ersten 4 Zeichen davon.

    
socha23 22.03.2012 09:18
quelle
1

So etwas sollte funktionieren:

%Vor%

Wo text2 Ihr nächstes Textfeld ist

    
John Snow 22.03.2012 09:19
quelle
0

einfach nur textarea erstellen und zu key typed events gehen Den kannst du das schreiben

%Vor%     
Vishal Menaria 20.02.2018 07:56
quelle

Tags und Links