比如你输入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插入.
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()是什么意思,
为什么获取长度还要加上字符串的长度呢?
谢拉
不过我想问一下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中关于该类的详细说明
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插入.
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()是什么意思,
为什么获取长度还要加上字符串的长度呢?
谢拉
不过我想问一下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中关于该类的详细说明
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
恩 谢谢