Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当JTextField达到一定数量的字符时,它会移动到下一个字符_Java_Swing_Jtextfield - Fatal编程技术网

Java 当JTextField达到一定数量的字符时,它会移动到下一个字符

Java 当JTextField达到一定数量的字符时,它会移动到下一个字符,java,swing,jtextfield,Java,Swing,Jtextfield,我正在制作一个礼品代码应用程序,我想知道是否有一种方法可以让你输入的文本字段在达到一定数量的字符时移动到下一个文本字段。因此,如果在我用4个字符填充第一个文本字段时,有4个文本字段彼此相邻,而不是按tab键,那么它将移动到下一个jtextfield,依此类推,直到它到达末尾,例如,使用DocumentListener可以很容易地实现您的基本要求 public class MoveFocusForwardHandler implements DocumentListener { priv

我正在制作一个礼品代码应用程序,我想知道是否有一种方法可以让你输入的文本字段在达到一定数量的字符时移动到下一个文本字段。因此,如果在我用4个字符填充第一个文本字段时,有4个文本字段彼此相邻,而不是按tab键,那么它将移动到下一个jtextfield,依此类推,直到它到达末尾,例如,使用
DocumentListener可以很容易地实现您的基本要求

public class MoveFocusForwardHandler implements DocumentListener {

    private int maxLength;

    public MoveFocusForwardHandler(int maxLength) {
        this.maxLength = maxLength;
    }

    public int getMaxLength() {
        return maxLength;
    }

    @Override
    public void insertUpdate(DocumentEvent e) {
        documentChanged(e);
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
        documentChanged(e);
    }

    @Override
    public void removeUpdate(DocumentEvent e) {
        documentChanged(e);
    }

    protected void documentChanged(DocumentEvent e) {
        if (getMaxLength() > 0) {
            if (e.getDocument().getLength() >= getMaxLength()) {
                KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();
            }
        }
    }

}

这一点已被证明

您的基本要求可以通过使用
DocumentListener
轻松实现,例如

public class MoveFocusForwardHandler implements DocumentListener {

    private int maxLength;

    public MoveFocusForwardHandler(int maxLength) {
        this.maxLength = maxLength;
    }

    public int getMaxLength() {
        return maxLength;
    }

    @Override
    public void insertUpdate(DocumentEvent e) {
        documentChanged(e);
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
        documentChanged(e);
    }

    @Override
    public void removeUpdate(DocumentEvent e) {
        documentChanged(e);
    }

    protected void documentChanged(DocumentEvent e) {
        if (getMaxLength() > 0) {
            if (e.getDocument().getLength() >= getMaxLength()) {
                KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();
            }
        }
    }

}

您知道如何检测文本区域是否有4个字符吗?你知道如何以编程方式聚焦文本区域吗?然后你就可以做了。你能显示你的代码吗?不,我没有,你想要什么代码?全部是JTextField textField=新的JTextField(3);然后我将它添加到JPanel中。这里是2,我提出了一个非常糟糕的解决方案,但至少它是有效的。这个概念已经演示过了。你知道如何检测文本区域是否有4个字符吗?你知道如何以编程方式聚焦文本区域吗?然后你就可以做了。你能显示你的代码吗?不,我没有,你想要什么代码?全部是JTextField textField=新的JTextField(3);然后我将它添加到JPanel中。这里是2,我提出了一个非常糟糕的解决方案,但至少它是有效的。这个概念已经演示过了