Java: Wie cursor automatisch von einem TextField zu anderen
In meiner Anwendung vier TextArea ist da und ich möchte nur vier Zeichen in einem Text-Bereich und cursor automatisch zum nächsten TestArea. Wieder, wenn ich geben Sie die vier Zeichen in das TextArea-dann wieder cursor automatisch zum nächsten TextArea.
Beispiel: Bei der Installation von Windows XP es will "Schlüssel" und es gibt vier-Abschnitt, wenn Sie geben Sie die vier Zeichen im ersten Abschnitt dann der cursor automatisch zum nächsten Abschnitt.
Gleiche Sache, die ich möchte in meiner Anwendung.
In diesem ersten von allen, die ich hinzufügen CustomizedTextFields.jar und dann schuf vier IntegerField:
private IntegerField text1;
private IntegerField text2;
private IntegerField text3;
private IntegerField text4;
danach habe ich zeigen, dass alle diese IntegerField auf meinem Bild.
Nun habe ich versucht diesen code zu senden cursor in das nächste Feld, aber es funktioniert nicht:
text1.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
int a2 = text1.getText().length();
if (a2 == 3) {
text2.getCursor();
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});
- Für bessere Hilfe früher, nach einem SSCCE.
Du musst angemeldet sein, um einen Kommentar abzugeben.
interessant genug Frage, um zu versuchen, die Verbesserung meiner schattenhaften Kenntnisse in der text-Paket 🙂
Gibt es zwei separate Anforderungen hier
code:
Den documentFilter ist die von der Swing Tutorial
transferFocus()
innenNavigationFilter
nichts geändert, so dass, Wenn Sie können, dann buchen Sie den gesamten code, ich werde wirklich verpflichtet.maxSize
4, als OP will für 4 Zeichen. Das löschen meiner Antwort 🙂hinzufügen DocumentListener der
JTextComponents
zum Zuhören hinzufügen DocumentFilternicht verwenden
KeyListener
fürJTextComponents
verwenden Sie nurDocumentListener
hinzufügen Nächstes
JTextArea
zu denDocumentListener
, wenn es getippt 4. Rang. Char inJTextArea
,beachten Sie, bewegt sich mit
Focus
von einemJTextArea
zu einem anderen besser wäre, eingewickelt ininvokeLater
Ersetzen
text2.getCursor()
mittext2.requestFocus()
.getCursor()
ist für das empfangen der Form des Mauszeigers, wenn die Maus über einer Komponente befindet.Auch, mit dieser Methode ist es immer noch möglich ist, geben Sie mehr als 4 chars in ein Feld, zum Beispiel durch einfügen aus der Zwischenablage. Wenn Sie möchten, um zu blockieren, dass, würden Sie brauchen, um zu überprüfen, ob eingegebene text ist länger als 4 chars, und wenn ja, nehmen Sie nur die ersten 4 Zeichen von ihm.
Etwas wie dies funktionieren sollte:
Wo text2 ist Ihr Nächstes textfield
einfach nur die textarea erstellen und gehen Sie zum Schlüssel typisierte Ereignisse
den u schreiben Sie diesen