class NumberDocument
extends PlainDocument {
int maxLength = 16;
int decLength = 0;
double minRange = Double.MIN_VALUE;
double maxRange = Double.MAX_VALUE;
public NumberDocument(int decLen, int maxLen) {
maxLength = maxLen;
decLength = decLen;
} /**
* @param decLen int 小数位长度
* @param maxLen int 最大长度(含小数位)
* @param minRange double 最小值
* @param maxRange double 最大值
*/
public NumberDocument(int decLen, int maxLen, double minRange,
double maxRange) {
this(decLen, maxLen);
this.minRange = minRange;
this.maxRange = maxRange;
} public NumberDocument(int decLen) {
decLength = decLen;
} public NumberDocument() {} public void insertString(int offset, String s, AttributeSet a) throws
BadLocationException {
int len = getLength();
String str = getText(0, len);
int decPos = str.indexOf(".");
if (
s.equals("F") || s.equals("f") || s.equals("D") || s.equals("d")
|| (str + s).length() > maxLength
||
(decPos > -1 && offset > decPos &&
( (str.substring(decPos + 1)) + s).length() > decLength)
||
(str.trim().equals("0") && !s.substring(0, 1).equals(".") &&
offset != 0)
|| (s.equals(".") && decLength == 0)
||
(s.indexOf(".") > -1 &&
s.substring(s.indexOf(".") + 1).length() > decLength)
) {
Toolkit.getDefaultToolkit().beep();
return;
}
try {
str = str.substring(0, offset) + s + str.substring(offset, len);
if (!str.equals("-") || (str.equals("-") && minRange <= 0)) {
double d = Double.parseDouble(str);
if (d < minRange || d > maxRange)
throw new Exception();
}
}
catch (Exception e) {
Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offset, s, a);
} }
extends PlainDocument {
int maxLength = 16;
int decLength = 0;
double minRange = Double.MIN_VALUE;
double maxRange = Double.MAX_VALUE;
public NumberDocument(int decLen, int maxLen) {
maxLength = maxLen;
decLength = decLen;
} /**
* @param decLen int 小数位长度
* @param maxLen int 最大长度(含小数位)
* @param minRange double 最小值
* @param maxRange double 最大值
*/
public NumberDocument(int decLen, int maxLen, double minRange,
double maxRange) {
this(decLen, maxLen);
this.minRange = minRange;
this.maxRange = maxRange;
} public NumberDocument(int decLen) {
decLength = decLen;
} public NumberDocument() {} public void insertString(int offset, String s, AttributeSet a) throws
BadLocationException {
int len = getLength();
String str = getText(0, len);
int decPos = str.indexOf(".");
if (
s.equals("F") || s.equals("f") || s.equals("D") || s.equals("d")
|| (str + s).length() > maxLength
||
(decPos > -1 && offset > decPos &&
( (str.substring(decPos + 1)) + s).length() > decLength)
||
(str.trim().equals("0") && !s.substring(0, 1).equals(".") &&
offset != 0)
|| (s.equals(".") && decLength == 0)
||
(s.indexOf(".") > -1 &&
s.substring(s.indexOf(".") + 1).length() > decLength)
) {
Toolkit.getDefaultToolkit().beep();
return;
}
try {
str = str.substring(0, offset) + s + str.substring(offset, len);
if (!str.equals("-") || (str.equals("-") && minRange <= 0)) {
double d = Double.parseDouble(str);
if (d < minRange || d > maxRange)
throw new Exception();
}
}
catch (Exception e) {
Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offset, s, a);
} }
import javax.swing.text.*;/**
* 功能:数字输入实现类
*
*/
public class NumberField extends JTextField
{
public NumberField(int cols)
{
super(cols);
}
/**
* 功能:创建一个数字文档实体
*
*/
protected Document createDefaultModel()
{
return new NumberDocument();
}
static class NumberDocument extends PlainDocument
{
/**
* 功能:把指定的str中的非数字的字符过滤掉
*
*/
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{ if (str == null)
{
return;
}
String newString="";
char[] upper = str.toCharArray();
for (int i = 0; i < upper.length; i++)
{
if(upper[i]>='0'&&upper[i]<='9')
{
newString+=upper[i];
}
}
super.insertString(offs, newString, a);
}
}
}