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

标签 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;

在此之后,我在我的框架上显示所有这些 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) {
            }
        });

最佳答案

有趣的问题足以尝试提高我对文本包的模糊知识:-)

这里有两个独立的需求

  • 限制文本的长度:这是通过 DocumentFilter 完成的,@mKorbel 已经指出
  • 在达到最大长度后自动将焦点转移到下一个组件:事实证明这可以通过 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);
}

documentFilter 是来自 Swing Tutorial 的那个

关于Java:光标如何自动从一个 TextField 移动到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819238/

相关文章:

java - JBoss EAP : @TransactionTimeout not affecting @Timeout Method?

java - 为什么 socket.close() 不释放绑定(bind)端口?

java - 我不知道如何将 Jbutton 返回到调用它的前一个方法

java - Canvas下的JPopupMenu显示

java - 将另一个类的面板实例添加到父面板

java - 图像和面板

java - 如何比较字符串同时忽略特定字符

Java Paint(是的,我知道,但我搜索过..),ActionListeners

java - 在JFrame中添加图像,点击时图像

java - 如何在java awt中的框架中添加按钮和面板