数字文本框JTextField(转)
<div style="font-size: 14px">
该类限制在文本框中输入非数字字符,即只允许输入数字[0-9],并且支持ctrl+c和ctrl+v
复制粘贴。
/** * JNumberTextField从JTextField派生,只允许输入数字字符。 <br> * 修改日志: <br> * (1) 2005-05-09 创建JNumberTextField类 <br> * (2) 2007-4-10 增加了输入数字位数控制 <br> */public class JNumberTextField extends JTextField { private static Toolkit toolkit = Toolkit.getDefaultToolkit(); /** * 默认最大位数为1024 */ protected int maxLength = 1024; // 构造函数 public JNumberTextField() { super(); } public JNumberTextField(int cols) { super(cols); } public void setMaxLength(int value) { maxLength = value; } protected Document createDefaultModel() { return new DigitDocument(); } protected class DigitDocument extends PlainDocument { public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { // 若字符串为空,直接返回。 if (str == null || str.length() == 0) { return; } // 控制输入数字的个数 String s = super.getText(0, super.getLength()); if (s.length() >= maxLength) return ; char[] source = str.toCharArray(); char[] result = new char[source.length]; int j = 0; for (int i = 0; i < source.length; i++) { if (Character.isDigit(source[i])) { result[j++] = source[i]; } else { toolkit.beep(); } } if (s.length() + j > maxLength) j = maxLength - s.length(); super.insertString(offs, new String(result, 0, j), a); } }}