public void insertString(int offs, String str, AttributeSet a)
            throws BadLocationException {
        if(str.length()>=4){
             Toolkit.getDefaultToolkit().beep();
                return;
        }
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) < '0' || str.charAt(i) > '9') {
             Toolkit.getDefaultToolkit().beep();
                return;
            }
        }
        super.insertString(offs,str,a);
    }下面限制只能输入数字没问题,但限制长度不行。。

解决方案 »

  1.   

    jtextfield
    好像没有限制长度的方法的吧。
    只有限制列数
    就是说。它可以无限延长的
    如果你要限制的话
    用jtextarea好了
      

  2.   

    可以自己限制啊,在KeyListener里面,重写public void keyTyped(KeyEvent e)方法,当输入的时候,先判断一下JTextField里面的文本的长度,jtf.getText().length,大于你规定的长度,就把你敲入的变成'\0'。
      

  3.   

    这个不用继承 PlainDocument 类,只需要在你想要控制的 TextField 上加上confirmNewPwdFieldKeyTyped listenerprivate void confirmNewPwdFieldKeyTyped(java.awt.event.KeyEvent evt) {
        //判断TextField已输入字符的长度,如果大于6,就执行evt.consume()
        //这样就可以控制TextField最大输入长度为6,当然这个值可以根据需要来改变
        if (confirmNewPwdField.getText().trim().length() >= 6) {
            evt.consume();
        }
    }