不加事件响应器怎么样在只能JTextField中输入3-5位数字,不得小于3位也不得大于5位。比如身份证号码的校验只能是15位或18位,输入其他位数都是错误的,怎么才能在一个继承JTextField的类中实现该功能呢~

解决方案 »

  1.   

    和javascript一样,在程序中判断不行么?
      

  2.   

    insiku(tmd 结帖啊!!!) 正解createDefaultModel()重写, 返回你自己的DocumentYourDocument extends PlainDocument {
      public void insertString(String s, int offs, AttributeSet a) {
        if (s == null || s.length() == 0)
          return;
        
        String oldText = getText(0, getLength());
        if (oldText.length() + s.length() < 5)
            super.insertString(s, offs, a);
      }
    }
    手写的代码, 没有看过API, 可能有点错, 调试一下吧, 基本思路如此.
    至于控制最少几位, 这个不好弄啊. 因为一开始是空的吧, 总是1个一个输入的...
    如果你实在想控制, 重写remove方法吧.