写个document,设定JTextField的document属性即可,下面给你一个
调用方式
textfiled.setDocument(new NumberDocument());
其中NumberDocument是继承PlainDocument的子类。
覆盖insertString和remove两个方法。?
详情请看:
http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html#validation
只能输入数字
import javax.swing.text.*;
import java.awt.*;public class NumberDocument 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.getDefaultToolkit().beep();
        System.err.println("insertString: " + source[i]);
    }
        }
        super.insertString(offs, new String(result, 0, j), a);
    }
}

解决方案 »

  1.   

    To: alphazhao(绿色咖啡) 
    老兄,上面的代码是只能录入数字,可是还要有小数点啊,还要判断小数点不能多于一个啊,怎么办?有qq吗?随时联系啊,我的是8123836,thanks
      

  2.   

    改动如下:将判断换成Double就行,下面的设置不能输入负数,如果还想要什么设置,可以自己修改阿class NumberDocument extends PlainDocument {
      public void insertString(int offset,String s,AttributeSet attributeSet)
      throws BadLocationException {
        try {
          if(!s.equals (".") && !s.equals ("-")) {
            Integer.parseInt(s,10);
          }
          String src=this.getText (0,this.getLength ());
          Double.parseDouble (src.substring (0,offset)+s+src.substring (offset,src.length ()));
        }
        catch(Exception ex) {
          Toolkit.getDefaultToolkit().beep();
          return;
        }
        super.insertString (offset,s,attributeSet);
      }
    }