当前位置: 技术问答>java相关
jTextField问题
来源: 互联网 发布时间:2015-10-30
本文导语: jTextField的字符长度设为固定长度,超长不能输入 | 需要通过他的document来管理。 class MyDocument extends PlainDocument{ int maxLength =10; public MyDocument(int newMaxLength){ super(); maxLength =...
jTextField的字符长度设为固定长度,超长不能输入
|
需要通过他的document来管理。
class MyDocument extends PlainDocument{
int maxLength =10;
public MyDocument(int newMaxLength){
super();
maxLength = newMaxLength;
}
public MyDocument(){
this(10);
}
//重载父类的insertString函数
public void insertString(int offset,String str,AttributeSet a)throws BadLocationException{
if(getLength()+str.length()>maxLength){//这里假定你的限制长度为10
return;
}
else{
super.insertString(offset,str,a);
}
}
}
然后用这个类控制你的textfield.
JTextField jTextField1 = new JTextField1();
jTextField1.setDocument(new MyDocument(20));
就可以了.
其实你完全可以在MyDocument的那个insertString方法的中加入自己的判断.
比如,可以控制保证输入的是一个整数,或者浮点数什么的.
class MyDocument extends PlainDocument{
int maxLength =10;
public MyDocument(int newMaxLength){
super();
maxLength = newMaxLength;
}
public MyDocument(){
this(10);
}
//重载父类的insertString函数
public void insertString(int offset,String str,AttributeSet a)throws BadLocationException{
if(getLength()+str.length()>maxLength){//这里假定你的限制长度为10
return;
}
else{
super.insertString(offset,str,a);
}
}
}
然后用这个类控制你的textfield.
JTextField jTextField1 = new JTextField1();
jTextField1.setDocument(new MyDocument(20));
就可以了.
其实你完全可以在MyDocument的那个insertString方法的中加入自己的判断.
比如,可以控制保证输入的是一个整数,或者浮点数什么的.
|
因为当你的jTextField通过键盘输入或者拷贝一个字符串的时候,他会调用他的document的insertString方法进行插入操作.
你在这个方法中进行控制的话,可以完全改变插入字符串的效果.比如,当文档的长度超过一定时,就不能插入,也就是什么都不作,直接返回.
还比如,当插入一个不合乎要求的字符串的时候,你仍然可以抛弃.
甚至,你可以做到,不管插入什么字符创,都可以在textfield框中显示你的名字什么的.
你在这个方法中进行控制的话,可以完全改变插入字符串的效果.比如,当文档的长度超过一定时,就不能插入,也就是什么都不作,直接返回.
还比如,当插入一个不合乎要求的字符串的时候,你仍然可以抛弃.
甚至,你可以做到,不管插入什么字符创,都可以在textfield框中显示你的名字什么的.
|
那你先
jTextField1.setDocument(new MyDocument());
试试.
jTextField1.setDocument(new MyDocument());
试试.
|
哦.应该给MyDocument类写为Public.
或者把这个类写在你要使用的.java文件里边.
另外需要在前面
import javax.swing.text.*;
或者把这个类写在你要使用的.java文件里边.
另外需要在前面
import javax.swing.text.*;
|
我试过了,完全可以.
你把上面写的MyDocument类写成一个public类,这样子的话需要一个MyDocument.java文件来保存它.编译.
然后在使用他的地方,把这个类import就可以.
你把上面写的MyDocument类写成一个public类,这样子的话需要一个MyDocument.java文件来保存它.编译.
然后在使用他的地方,把这个类import就可以.