import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class shiyan {
private JTextField textField;
public shiyan() {
JFrame f = new JFrame();
f.getContentPane().setLayout(null);
f.setSize(500, 328);
final JLabel label = new JLabel();
label.setText("输入数字:");
label.setBounds(54, 93, 74, 33);
f.getContentPane().add(label);
textField = new JTextField();
LimitedDocument limitDocument = new LimitedDocument(10);// 允许长度为10
limitDocument.setAllowChar("0123456789");// 只允许输入数字
textField.setDocument(limitDocument);
textField.setBounds(161, 98, 170, 33);
f.getContentPane().add(textField);
f.setVisible(true);
}
public static void main(String[] args) {
new shiyan();
}
}
class LimitedDocument extends PlainDocument {
private static final long serialVersionUID = 1L;
private int maxLength = -1;// 允许的最大长度
private String allowCharAsString = null;// 允许的字符串格式(0123456789)
public LimitedDocument() {
super();
}
public LimitedDocument(int maxLength) {
super();
this.maxLength = maxLength;
}
public void insertString(int offset, String str, AttributeSet attrSet) throws BadLocationException {
if (str == null) {
return;
}
if (allowCharAsString != null && str.length() == 1) {
if (allowCharAsString.indexOf(str) == -1) {
return;// 不是所要求的字符格式,就直接返回,不进行下面的添加
}
}
char[] charVal = str.toCharArray();
String strOldValue = getText(0, getLength());
char[] tmp = strOldValue.toCharArray();
if (maxLength != -1 && (tmp.length + charVal.length > maxLength)) {
Toolkit.getDefaultToolkit().beep();// 发出一个警告声
return;// 长度大于指定的长度maxLength,也直接返回,不进行下面的添加
}
super.insertString(offset, str, attrSet);
}
public void setAllowChar(String str) {
allowCharAsString = str;
}
}
温馨提示:内容为网友见解,仅供参考