【问题标题】:When a JTextField reaches a certain amount of characters it moves onto the next one [closed]当 JTextField 达到一定数量的字符时,它会移动到下一个 [关闭]
【发布时间】:2016-07-31 05:27:52
【问题描述】:

我正在制作一个礼品代码应用程序,我想知道是否有办法让您输入的文本字段在您达到一定数量的字符时移动到下一个文本字段。因此,如果当我用 4 个字符填充第一个文本字段而不是点击制表符时,有 4 个文本字段彼此相邻,它会继续移动到下一个 jtextfield,依此类推,直到它到达末尾

【问题讨论】:

  • 你知道如何检测文本区域何时有 4 个字符吗?你知道如何以编程方式聚焦文本区域吗?那么你可以做到。你能显示你的代码吗?
  • 不,我没有,你想要什么代码?它就是 JTextField textField = new JTextField(3);然后我将它添加到 JPanel。
  • 我想出了一个非常糟糕的解决方案,但至少它有效。
  • 这个概念被证明here

标签: java swing jtextfield


【解决方案1】:

您的基本要求可以通过使用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();
            }
        }
    }

}

演示了here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多