《检验数据合法性》由会员分享,可在线阅读,更多相关《检验数据合法性(2页珍藏版)》请在金锄头文库上搜索。
1、此类可实现文本框只接收数字键及小数点(只允许输入一次小数点)功能。并且防止用户粘贴非法数字。import java.awt.Toolkit;import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.PlainDocument;/* author Administrator*/注:此类没有检查负号,即不能输入负数,使用下面的正则表达式则可优雅地处理各种情况方法1:public class DecimalOnlyDocument extends
2、PlainDocument (private boolean dot = false;/true:已经有小数点 0:还没有小数点Overridepublic void insertString(int offs, String str, AttributeSet a) throwsBadLocationException (if (super.getText(0, super.getLength().indexOf(.) = -1)/检查原来文本框是否已经有小数点dot = false; else (dot = true;for (int i = 0; i str.length(); i+)
3、(if (str.charAt(i) 9) (if (str.charAt(i) != . | dot) (Toolkit.getDefaultToolkit().beep();/蜂鸣器响一声 return;/非小数点的字母或者已经有小数点,返回elsedot = true;/*if (str.indexOf(.) != -1) dot = true;*/ super.insertString(offs, str, a); 方法2 :使用正则表达式则可优雅地处理推荐 import java.awt.Toolkit;import java.util.regex.Matcher;import ja
4、va.util.regex.Pattern;import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.PlainDocument;public class DecimalOnlyDocument extends PlainDocument (private boolean dot = false;/true:已经有小数点 0:还没有小数点 Overridepublic void insertString(int offs, String st
5、r, AttributeSet a) throws BadLocationException (StringBuffer tmp = new StringBuffer(super.getText(0, super.getLength();tmp.insert(offs, str);Pattern p = Ppile(-?d*(.)?d*$);Matcher m = p.matcher(tmp.toString(); if (m.find() ( super.insertString(offs, str, a); elseToolkit.getDefaultToolkit().beep();/蜂鸣器响一声使用:JTextField numl = new JTextField(10);num1.setDocument(new NumOnly();