TextField限制输入长度

TextField中,我们需要设置它的输入长度,但是呢?JAVA中没有给出具体的方法,那么只好自己来写一个了。

这里先给出第一种方法:

对于TextField的对象,给它增加一个事件监听,每当从键盘敲入一个字符时,就对它的长度进行判断,如果长度达到某一条件,则无法继续输入(通过consume方法实现)。

public void keyTyped(KeyEvent e) {
	// TODO Auto-generated method stub
	String s = textField.getText();
	if(s.length() >= 8) e.consume();
}

经过测试,在keyReleased方法和keyPressed方法中调用consume方法无法实现该效果。

先来介绍一下这个consume方法,该方法是用来销毁实例的。在上述代码中,当s的长度大于等于8时,就销毁多出来的字符了,从而达到了限制输入长度的效果。

我测试了一下,当我按下一个按键时,首先调用的是keyPressed方法,然后再将键入的字符显示到TextField文本框中,最后再调用keyReleased方法。

也就是说,如果我在keyPressed中调用consume方法,它就无法做到限制字符输入长度的效果,因为文本框中的字符是在我进行完keyPressed方法后显示的。

同样的,为什么在keyRelease中也不行呢?我是这样认为的(不知道对不对),在调用keyPressed后,字符就立刻显示到了文本框中,但是此时还没有调用keyReleased方法,所以同样达不到通过consume方法来限制输入长度的效果。

以上都是个人观点,至于对不对我也不知道,我百度了好久也没找到这方面的资料。

然后第二种方法:

关于这类问题,还有一种通过调用setDocument方法,参数是继承PlainDocument的类对象,并且在该类中重写insertString方法,代码如下:

public class JTextFieldLimit extends PlainDocument {
	private int limit;  //限制的长度

	public JTextFieldLimit(int limit) {
		super(); //调用父类构造
		this.limit = limit;
	}
	public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
		if(str == null) return;
		if((getLength() + str.length()) <= limit) {
			super.insertString(offset, str, attr);//调用父类方法
		}
	}
}

THE END~



时间: 2024-10-09 00:05:41

TextField限制输入长度的相关文章

iOS(Swift) TextField限制输入文本的长度(不是字数)

最近做项目有一个特殊需求,就是需要限制一个TextField的输入文本的长度在一定范围内(注意,不是字数),上网查了一圈没有找到类似文章,这里把我的方法写进来,mark一下: 1.对TextField添加监听函数: textField.addTarget(self, action: "textFieldTextDidChange:", forControlEvents: UIControlEvents.EditingChanged) 2.在输入内容变化时进行处理: func textF

自定义UItextFiled,限制TextFiled 的输入长度

1.一般情况下,处理textFiled的字符数都会用到textField的代理方法 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 在方法中对字符数进行控制,但是此方法的有一定的问题.现在推出一种新的自定义的机制,自定义textField控件,为其增加一个控制输入长度的属性,如下 .h文件 #i

限制 UITextField 输入长度

限制 UITextField 输入长度 标签(空格分隔): UITextField UITextField 是 iOS 中最常用的组件之一.关于它也有各种各样的需求,这些需求是它本身没有提供相应的API的.限制输入框文本长度是常见的需求,UITextField 本身也并没有为此提供API.本文尝试给其加入这个功能. 1.通过 delegate 来实现 限制 UITextField 的输入字数,首先想到的是 UITextFieldDelegate,通过实现这个协议来实现需求: - (BOOL)te

iOS 中文输入长度控制

当使用拼音输入法时,该委托方法中的最后一个参数string接受的是输入的字母,而不是选择的汉字,造成的结果是,当想输入文字“我在编程”,输入拼音“wozaibiancheng”,每输入一个字母便会进入委托方法,统计的字符长度是字母的长度,实际上汉字还未超过限制长度,但是字母的长度超过了导致无法继续输入. 中文控制输入长度的方法如下: 1.注册notification [[NSNotificationCenter defaultCenter]addObserver:self selector:@s

如何更好地限制一个UITextField的输入长度

要限制一个UITextField的输入字数(参考链接),首先想到的应该是通过 UITextFieldDelegate 的代理方法来限制: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; return NO to not change text 比如要设置字数限制为20: - (BOOL)text

iOS- UITextField限制输入长度

限制输入长度的问题,在这里完美的解决了! //先创建一个textField 和 一个button. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #import "ViewController.h" @interface ViewController ()<UITextFieldDeleg

fscanf_s在读入string时必须同时输入长度

fscanf_s在读入string时必须同时输入长度,比如: char buf[100]; fscanf_s(file,"%s",buf,100);//这里如果缺少100这个长度的话,会出现运行时错误!

代码设置Android EditText的输入长度maxLength

在今天开发中遇到一个自己写的自定义控件,因为考虑到复用,在每个需求下的edittext的输入长度不一样,在xml文件里面设置是不能实现这个需求的,于是在发现了这个API,可以通过代码设置! 希望对大家有所帮助! public void setEtCoustomLength(int length){ if (length>0) { etCoustom.setFilters(new InputFilter[]{new InputFilter.LengthFilter(length)}); } } 重

android的edittext输入长度

http://blog.csdn.net/uyu2yiyi/article/details/6329738 http://flysnow.iteye.com/blog/828415/ http://songfantasy.iteye.com/blog/1172362 android的edittext输入长度,布布扣,bubuko.com