用change事件,每次键入字符就判断是否数字,不是则删掉

解决方案 »

  1.   

    用这个两个类吧:
    package NumericTextField;import java.awt.Toolkit;
    import javax.swing.text.*;
    import javax.swing.JTextField;
    import javax.swing.text.Document;class NumericDocument extends PlainDocument
    {
    protected int maxDigits=-1; protected static Toolkit toolkit = Toolkit.getDefaultToolkit(); public NumericDocument(int digits) {
    super();
    maxDigits = digits;
    }
    public NumericDocument() {
    this(-1);
    }
    public int getmaxDigits() {
    return maxDigits;
    }
    public void insertString(int offset, String text, AttributeSet attributes) throws BadLocationException {
    int count= text.length();
    for (int i = 0; i < count; i++) {
    if (!(Character.isDigit(text.charAt(i)))) {
    toolkit.beep();
    return;
    }
    }
    if ((maxDigits > 0) && ((getLength() + count) > maxDigits) ) {
    toolkit.beep();
    return;
    }
    super.insertString(offset, text, attributes);
    }
    }public class NumericTextField extends JTextField {
    public NumericTextField(String text, int columns) {
    super(text, columns);
    }
    public NumericTextField(int columns) {
    super(columns);
    }
    protected Document createDefaultModel() {
    return new NumericDocument(getColumns());
    }
    }
    每次要用文本框的时候就new一个NumericTextField对象,就ok了.