怎么限制 JTextField中只可以输入4个字符.注意是只可以输入4个,不是显示4个。
比如你输入1234,再输入5时是输入不了的。

解决方案 »

  1.   

    设jtf为JTextField的实例,则可用它的setDocument方法为其指定一个自己定制的PlainDocument(覆盖标准类的insertString方法得到),代码如下:
        jtf.setDocument(new PlainDocument(){
          public void insertString(int offset,String str,AttributeSet as)
          throws BadLocationException{
            if(this.getLength()+str.length() >= 4){
              java.awt.Toolkit.getDefaultToolkit().beep();
            }
            else
              super.insertString(offset,str,as);
          }
        });
    上例中当插入一个(或一串字符,这可能是使用了粘贴)时检查有无超过4个字,有则发出咚咚的声音提示,否则将str插入.
      

  2.   

    补充一下:PlainDocument和AttributeSet类均在javax.swing.text包里,用时需要将这个包导入.
      

  3.   

    比如我还想只可以输入数字,怎么做呢?要对JTextField对象实时监空 怎么做啊
      

  4.   

    可以
    谢拉
    不过我想问一下if语句里面的这句
    getLength() + str.length()是什么意思,
    为什么获取长度还要加上字符串的长度呢?
      

  5.   

    嗯,这些知识是从一本Bret Spell写的《Java专业编程指南》(电子工业出版社)学到的。要限制只输入数字可利用Character(也在text包内)的静态方法isDigit这么干,加个
    for(int i = 0;i < str.length();i++)
    if(!Character.isDigit(str.charAt(i))){
    //这为提示代码
    }
    另外,getLength() 为没插入前的字符长度,如果加上新插入的超过了4就不干,所以才加上阿。
    你提到的“要对JTextField对象实时监空 怎么做啊”我不太明白,呵呵。反正JTextField是负责显示数据,数据维护由PlainDocument来负责。你说监控应该指监控其数据,建议你Java doc中关于该类的详细说明
      

  6.   

    plainDocument中有insertUpdate方法,在向文档插入内容时调用,