?? fnumberfield.java
字號:
package com.utstar.ems.omcs.function;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.Toolkit;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
/**
* <p>Title: number</p>
* <p>Description: this textField only accept numbers, you can set max number and max column too.</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class FNumberField extends JTextField
{
private Toolkit toolkit;
private NumberFormat integerFormatter;
private int maxValue = Integer.MAX_VALUE;
// default
public FNumberField()
{
super();
toolkit = Toolkit.getDefaultToolkit();
integerFormatter = NumberFormat.getNumberInstance(Locale.US);
integerFormatter.setParseIntegerOnly(true);
}
// number of bits
public FNumberField(int columns)
{
super(columns);
toolkit = Toolkit.getDefaultToolkit();
integerFormatter = NumberFormat.getNumberInstance(Locale.US);
integerFormatter.setParseIntegerOnly(true);
}
// initail value and number of bits
public FNumberField(int value, int columns)
{
super(columns);
toolkit = Toolkit.getDefaultToolkit();
integerFormatter = NumberFormat.getNumberInstance(Locale.US);
integerFormatter.setParseIntegerOnly(true);
setValue(value);
}
public int getValue()
{
int retVal = 0;
try
{
retVal = integerFormatter.parse(getText()).intValue();
}
catch (ParseException e)
{
toolkit.beep();
}
return retVal;
}
public void setValue(int value)
{
setText(integerFormatter.format(value));
}
protected Document createDefaultModel()
{
return new TNumberDocument();
}
public void setMaxValue(int max)
{
maxValue = max;
}
protected class TNumberDocument extends PlainDocument
{
public void remove(int offs, int len) throws BadLocationException
{
super.remove(offs, len);
String newStr = FNumberField.this.getText();
for (int i = 0; i < newStr.length() - 1; i++)
{
if (newStr.charAt(i) != '0')
{
break;
}
super.remove(0, 1);
}
}
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{
char[] source = str.toCharArray();
char[] result = new char[source.length];
int j = 0;
String temp = FNumberField.this.getText();
if (str.equals(""))
{
}
else
{
for (int i = 0; i < result.length; i++)
{
if (Character.isDigit(source[i]))
{
result[j++] = source[i];
}
else
{
toolkit.beep();
}
}
}
StringBuffer buffer = new StringBuffer(FNumberField.this.getText());
buffer.insert(offs, result, 0, j);
int newValue = 0;
if (!buffer.toString().equals(""))
{
try
{
newValue = Integer.parseInt(buffer.toString());
}
catch (Exception ex)
{
newValue = maxValue;
}
}
if (newValue < maxValue)
{
super.insertString(offs, new String(result, 0, j), a);
}
String newStr = FNumberField.this.getText();
for (int i = 0; i < newStr.length() - 1; i++)
{
if (newStr.charAt(i) != '0')
{
break;
}
super.remove(0, 1);
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -