JTextField利用setDocument方式来设置文本框输入的内容
来源:互联网 发布:lofter个性域名怎么弄 编辑:程序博客网 时间:2024/05/22 03:12
JTextField中提供了一个setDocument(Document doc)的方法,利用该方法我们可以设置文本框输入特定的字符。
通常我们继承PlainDocument并重写他的insertString(int offs, String str, AttributeSet a)
offs
- 起始偏移量,该值 >= 0
str
- 要插入的字符串;
a
- 插入内容的属性
以下是继承该类所实现的两个子类代码:
import java.util.regex.Matcher;import java.util.regex.Pattern;import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.PlainDocument;/** * 自己定义的文本 * @author Administrator */public class MyDocument { /** * 能输入小数的文本 */ public static class DoubleOnlyDocument extends PlainDocument { @Override public void insertString(int offset, String s, AttributeSet attrSet) throws BadLocationException { //获得文本框中的值 String text = this.getText(0, offset); String reg = "\\."; Pattern pat = Pattern.compile(reg); Matcher mat = pat.matcher(text); //判断文本框中是否含有小数点 boolean point = false; if(mat.find()) { point = true; } //如果偏移量不为0,并且无小数点时,如果当前输入的为小数点,则添加进文本框并返回,不进行之后的操作 if(offset != 0 && !point) { if(s.equals(".")) { //调用父类方法将字符插入文本框中 super.insertString(offset, s, attrSet); return; } } //将字符串解析成数字是否会抛出异常,抛出异常则说明该字符不为数字,返回,否则插入文本框中 try { Integer.parseInt(s); } catch (NumberFormatException ex) { return; } super.insertString(offset, s, attrSet); } } /** * 只能输入数字 */ public static class NumOnlyDocument extends PlainDocument { @Override public void insertString(int offset, String s, AttributeSet attrSet) throws BadLocationException { try { Integer.parseInt(s); } catch (NumberFormatException ex) { return; } super.insertString(offset, s, attrSet); } } }
接下来通过setDoucument(new MyDocument.DoubleOnlyDocument())来控制文本框中输入的字符了。
需要注意的是:
1、如果有多个文本框时,每一个JTextField都需要设置一个自己的Document,否则某一个文本框输入值时,其他文本框的值也会改变
2、如果先设置文本框的值,再设置Document,则文本框中的值将变为空。
如:
jTextField.setText("1111"); JTextField.setDoucument(new MyDocument.NumOnlyDocument());//此时jTextField文本框中显示出来的值就为空
- JTextField利用setDocument方式来设置文本框输入的内容
- java实现文本框JTextField的实施监听输入内容,并实时显示出来
- 设置TextEdit 设置文本框只能输入限制的内容
- iOS ---利用文本框的协议判断是否输入内容
- JTextField根据输入,实现自动获取内容
- 利用正则表达式限制网页表单里的文本框输入内容
- 利用正则表达式限制网页表单里的文本框输入内容
- 利用正则表达式限制网页表单里的文本框输入内容
- 利用正则表达式限制网页表单里的文本框输入内容
- 利用正则表达式限制网页表单里的文本框输入内容
- 利用正则表达式限制网页表单里的文本框输入内容
- 利用正则表达式限制网页表单里的文本框输入内容小结
- 监听JTextfield内容的改变
- JTextField内容有效性验证几种方式
- JTextField内容有效性验证几种方式
- JTextField内容有效性验证几种方式
- 文本框控件JTextField和JTextArea的使用
- webdriver中利用js来向富文本框书写内容
- 仿百度搜索的文本框(第二种实现ajax联想查询的文本框)
- pthread_create用法
- 编码分类
- 基于Visual C++2013拆解世界五百强面试题--题11-查找数字出现次数
- java自学笔记之面向对象多态
- JTextField利用setDocument方式来设置文本框输入的内容
- ubuntu下hadoop源代码安装
- 日志切换 redo log 频繁
- 【网络基础】TCP协议的三次握手过程
- JAVA解析JSON相关
- 转一篇制作jffs2文件系统的好文章
- UITextView关闭键盘
- eclipse中设置代码字体
- java正则表达式测试