有两种方法:
一、你可以判断AscII的值
二、使用格式化

解决方案 »

  1.   

    具体代码可能api有些出入,addKeyListener(new KeyAdapter(){
      public void keyTyped(KeyEvent e) {
        int keyCode = e.getKeyCode();
        switch (keyCode) {//判断按下的是哪个键
          case KeyEvent.VK_0:......
          case KeyEvent.VK_9: 
            break;
          default:
            e.consume(); //关键,屏蔽掉非法输入
        }
      }
    });
      

  2.   

    加键盘监听器KeyListener kl = new KeyListener() {
        public void keyPressed(KeyEvent e) {}
        public void keyReleased(KeyEvent e) {}
        public void keyTyped(KeyEvent e) {
    if (e.getKeyChar() < '0' ||
        e.getKeyChar() > '9') {
        e.setKeyChar((char)0);
        return;
    }
        }
    };

    your_TextField = new TextField();
    your_TextField.addKeyListener(kl);
      

  3.   

    用 JFormattedTextFieldzipField = new JFormattedTextField(
                        createFormatter("#####"));
      

  4.   

    提供一个全类,完全实现只输入数字/**
     * <p>Description: JNumberField 数字格式输入框</p>
     * @version 1.0
     */package jujin.common.swing;import jujin.common.base.*;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    import javax.swing.text.*;
    import java.awt.*;
    import java.awt.event.*;/**
     * 本类为一文本输入对话框,是只充许输入数字格式的文本输入框
     */
    public class JNumberField extends JTextField
      implements ActionListener, FocusListener 
    {
      /**
       * 空构造函数
       */
      public JNumberField() 
      {
        this(true);
      }
      
      /**
       * 带参数构造函数
       * @param addAction 是否添加监听
       */
      public JNumberField(boolean addAction) 
      {
        this(0, 16, addAction);
      }
      /**
       * 带参数构造函数
       * @param declen 小数位长度
       */
      public JNumberField(int decLen) 
      {
        this(decLen, true);
      }  /**
       * 带参数构造函数
       * @param declen 小数位长度
       * @param addAction 是否添加监听
       */
      public JNumberField(int decLen, boolean addAction) 
      {
        this(decLen, 16, addAction);
      }
      
      /**
       * 带参数构造函数
       * @param declen 小数位长度
       * @param maxlen 最大长度(含小数位)
       */
      public JNumberField(int decLen, int maxLen) 
      {
        this(decLen, maxLen, true);
      }
      
      /**
       * 带参数构造函数
       * @param declen 小数位长度
       * @param maxlen 最大长度(含小数位)
       * @param addAction 是否添加监听
       */
      public JNumberField(int decLen, int maxLen, boolean addAction) 
      {
        //初始大小
        setPreferredSize(new Dimension(150, 25));
        setDocument(new NumberDocument(decLen, maxLen));
        //右对齐
        super.setHorizontalAlignment(JTextField.RIGHT);
        if (addAction) 
        {
          addActionListener(this);
        }
        //焦点监听
        addFocusListener(this);
      }
      
      /**
       * 带参数构造函数
       * @param declen 输入框长度
       * @param maxlen 最大长度(含小数位)
       * @param minRange 最小值
       * @param maxRange 最大值
       * @param addAction 是否添加监听
       */
      public JNumberField(int decLen, int maxLen, double minRange, double maxRange,
             boolean addAction) 
      {
        setPreferredSize(new Dimension(150, 25));
        setDocument(new NumberDocument(decLen, maxLen, minRange, maxRange));
        //右对齐
        super.setHorizontalAlignment(JTextField.RIGHT);
        if (addAction)
        {
           addActionListener(this);
        }
        //焦点监听
        addFocusListener(this);
      }  public void actionPerformed(ActionEvent e) 
      {
        //强制下一控件得到焦点
        transferFocus();
      }  /**
       * 实现的焦点监听器接口
       */
      public void focusGained(FocusEvent e) 
      {
        //选择所有
        selectAll();
      }  public void focusLost(FocusEvent e) 
      {
      }  public static void main(String[] args) 
      {
        SwingUtil swingUtil = new SwingUtil();
        swingUtil.setLookAndFeel();
        JFrame frame = new JFrame();
        //EXIT_ON_CLOSE == 3
        frame.setDefaultCloseOperation(3);
        frame.setTitle("JNumberField Demo");
        frame.getContentPane().setLayout(new FlowLayout());
        frame.getContentPane().add(new JNumberField(), BorderLayout.CENTER);
        frame.getContentPane().add(new JNumberField(10), BorderLayout.CENTER);
        frame.getContentPane().add(new JNumberField(10, 16), BorderLayout.CENTER);
        frame.getContentPane().add(new JNumberField(10, 16, -10, 100, false),
                                   BorderLayout.CENTER);
        frame.setSize(400, 320);
        //swingUtil.setCenter(frame);
      }}/**
     * 数字框类
     */
    class NumberDocument extends PlainDocument 
    {
      int maxLength = 16;
      int decLength = 0;
      double minRange = Double.MIN_VALUE;
      double maxRange = Double.MAX_VALUE;
      
      /**
       * 空构造函数
       */
      public NumberDocument() {}
      /**
       * 带参数构造函数
       * @param decLen int  小数位长度
       * @param maxLen int  最大长度(含小数位)
       */
      public NumberDocument(int decLen, int maxLen) 
      {
        maxLength = maxLen;
        decLength = decLen;
      }  /**
       * 带参数构造函数
       * @param decLen int  小数位长度
       * @param maxLen int  最大长度(含小数位)
       * @param minRange double  最小值
       * @param maxRange double  最大值
       */
      public NumberDocument(int decLen, int maxLen, double minRange,
                            double maxRange) 
      {
        this(decLen, maxLen);
        this.minRange = minRange;
        this.maxRange = maxRange;
      }
      
      /**
       * 带参数构造函数
       * @param decLen int  小数位长度
       */
      public NumberDocument(int decLen) 
      {
        decLength = decLen;
      }
      
      
      /**
       * 添加字符串
       * @param offset - the offset into the document to insert the content >= 0
       * @param s - 要插入的字串
       * @param a - 联合插入内容的属性 
       */
      public void insertString(int offset, String s, AttributeSet a) throws
          BadLocationException 
      {
        int len = getLength();
        String str = getText(0, len);
        int decPos = str.indexOf(".");
        if (
            s.equals("F") || s.equals("f") || s.equals("D") || s.equals("d")
            || (str + s).length() > maxLength || (decPos > -1 && offset > decPos 
            && ((str.substring(decPos + 1)) + s).length() > decLength)
            || (str.trim().equals("0") && !s.substring(0, 1).equals(".")
            && offset != 0) || (s.equals(".") && decLength == 0)
            || (s.indexOf(".") > -1 
            && s.substring(s.indexOf(".") + 1).length() > decLength)) 
        {
          Toolkit.getDefaultToolkit().beep();
          return;
        }
        try 
        {
          str = str.substring(0, offset) + s + str.substring(offset, len);
          if (!str.equals("-") || (str.equals("-") && minRange <= 0)) 
          {
            double d = Double.parseDouble(str);
            if (d < minRange || d > maxRange)
            {
              throw new Exception();
            }
          }
        }
        catch (Exception e) 
        {
          Toolkit.getDefaultToolkit().beep();
          return;
        }
        super.insertString(offset, s, a);
      }}
      

  5.   

    刚学习JAVA,正好看到这里,希望对你有帮助 
    textField.addKeyListener(new
         KeyAdapter()
           {
              public void keyTyped(KeyEvent event)
               {
                   char ch=event.getKeyChar();
                   if(ch<'0'||ch>'9')
                    event.consume;
                }
           }
    });
    摘于CoreJava第五版P308
      

  6.   

    event.consume();
    落了一对括号