Java:游标如何自动从一个TextField移动到另一个TextField

Vin*_*ash 7 java swing awt

在我的应用程序中,有四个TextArea,我想在一个文本区域只输入四个字符,光标自动移动到下一个TestArea.再次当我在此TextArea中输入四个字符时,再次光标自动移动到下一个TextArea.

示例:在安装Window XP时,它需要"Key",当您在第一部分输入四个字符时有四个部分,然后光标自动移动到下一部分.

在我的应用程序中我想要的相同.

首先,我添加CustomizedTextFields.jar,然后创建四个IntegerField:

private IntegerField text1;
private IntegerField text2;
private IntegerField text3;
private IntegerField text4;
Run Code Online (Sandbox Code Playgroud)

在此之后,我在我的框架上显示所有这些IntegerField.

现在我尝试使用此代码将光标发送到下一个字段,但它不起作用:

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) {
            }
        });
Run Code Online (Sandbox Code Playgroud)

kle*_*tra 10

有趣的问题,尝试提高我对文本包的阴暗知识:-)

这里有两个单独的要求

  • 限制文本的长度:使用DocumentFilter完成,因为@mKorbel已经注意到了
  • 达到最大长度后自动将focusFocus传送到下一个组件:结果可以通过NavigationFilter完成

在代码中:

JComponent panel = new JPanel();
final int maxSize = 3;
for (int i = 0; i < 4; i++) {
    final JTextField field = new JTextField(5);
    NavigationFilter filter = new NavigationFilter() {

        @Override
        public void setDot(FilterBypass fb, int dot, Bias bias) {
            if (dot >= maxSize) {
                fb.setDot(0, bias);
                field.transferFocus();
                return;
            }
            fb.setDot(dot, bias);
        }

        @Override
        public void moveDot(FilterBypass fb, int dot, Bias bias) {
            if (dot >= maxSize) { 
                fb.setDot(0, bias);
                field.transferFocus();
                return;
            }
            fb.moveDot(dot, bias);
        }

    };
    field.setNavigationFilter(filter);
    ((AbstractDocument) field.getDocument()).setDocumentFilter(new DocumentSizeFilter(maxSize));
    panel.add(field);
}
Run Code Online (Sandbox Code Playgroud)

documentFilter是Swing Tutorial中的一个


mKo*_*bel 6

At the time of installing Window XP it want "Key" and there are four section 
when you enter four character in first section then cursor automatically move 
to the next section.
Run Code Online (Sandbox Code Playgroud)
  1. DocumentListener添加到JTextComponents,用于侦听添加DocumentFilter

  2. 不使用KeyListenerJTextComponents,只使用DocumentListener

  3. 旁边添加需要JTextAreaDocumentListener,如果是有类型的第四位.Char into JTextArea,

  4. 注意,Focus从一个移动JTextArea到另一个将更好地包裹invokeLater