请问,大家怎么限制 JTextField中只可以输入4个字符.注意是只可以输入4个,不是显示4个。

时间:2021-01-05 04:29:00
怎么限制 JTextField中只可以输入4个字符.注意是只可以输入4个,不是显示4个。
比如你输入1234,再输入5时是输入不了的。

9 个解决方案

#1


我也是个新手,正在学习,帮你顶一下,大家一起学习了!

#2


设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插入.

#3


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

#4


恩 懂拉 我还想问问 这些 知识 是 有专门的书讲吗?谢谢

#5


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

#6


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

#7


嗯,这些知识是从一本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中关于该类的详细说明

#8


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

#9


恩 谢谢

#1


我也是个新手,正在学习,帮你顶一下,大家一起学习了!

#2


设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插入.

#3


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

#4


恩 懂拉 我还想问问 这些 知识 是 有专门的书讲吗?谢谢

#5


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

#6


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

#7


嗯,这些知识是从一本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中关于该类的详细说明

#8


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

#9


恩 谢谢