wholenumberfield.java

来自「初级学习资料必读本」· Java 代码 · 共 62 行

JAVA
62
字号
import javax.swing.*; import javax.swing.text.*; import java.awt.Toolkit;import java.text.NumberFormat;import java.text.ParseException;import java.util.Locale;public class WholeNumberField extends JTextField {    private Toolkit toolkit;    private NumberFormat integerFormatter;    public WholeNumberField(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) {            // This should never happen because insertString allows            // only properly formatted data to get in the field.            toolkit.beep();        }        return retVal;    }    public void setValue(int value) {        setText(integerFormatter.format(value));    }    protected Document createDefaultModel() {        return new WholeNumberDocument();    }    protected class WholeNumberDocument extends PlainDocument {        public void insertString(int offs,                                  String str,                                 AttributeSet a)                 throws BadLocationException {            char[] source = str.toCharArray();            char[] result = new char[source.length];            int j = 0;            for (int i = 0; i < result.length; i++) {                if (Character.isDigit(source[i]))                    result[j++] = source[i];                else {                    toolkit.beep();                    System.err.println("insertString: " + source[i]);                }            }            super.insertString(offs, new String(result, 0, j), a);        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?