其实做一个数字输入框和做一个普通的输入框,在使用的控件上来说没有任何区别,只要一个JTextField即可。但是既然是数字输入框,那么顾名思义就是只能输入数字,对吧。那么很好办,为这个JTextField添加键盘相应事件(比如keyPress),然后在这个keyPress(int keycode){}中添加代码来判断每一次数入的字符是不是数字,如果是,那么ok,显示这个字符;如果不是,那么no,不现实这个数字即可。参考代码如下
public void keyPress(int keycode){
   如果 keycode >= 0 并且 <=9
   那么 在JTextField的末尾追加keycode
   否则 不做任何处理
}

解决方案 »

  1.   

    给你一个用于WEB页面的输入框检测:
    //IsDigital函数判断一个字符串是否由数字(int or long)组成 
    function isDigital(str)   
    {
      for(ilen=0;ilen<str.length;ilen++)
      {
        if(str.charAt(ilen) < '0' || str.charAt(ilen) > '9' )
        {
           return false;
        }   
      }
      return true;
    }
    //IsFloat函数判断一个字符串是否由数字(int or long or float)组成 
    function IsFloat(str)   
    {
      flag_Dec = 0
      for(ilen=0;ilen<str.length;ilen++)
      {
        if(str.charAt(ilen) == '.')
        {
           flag_Dec++;
       if(flag_Dec > 1)
              return false;
           else
              continue;
        }         
        if(str.charAt(ilen) < '0' || str.charAt(ilen) > '9' )
        {
           return false;
        }   
      }
      return true;
    }
      

  2.   

    拜托能实例化public void keyPress(int keycode){
       如果 keycode >= 0 并且 <=9
       那么 在JTextField的末尾追加keycode
       否则 不做任何处理
    }吗?我也非常需要这段代码.
      

  3.   

    我随便写了一个,这个严格来说不算好。因为仅仅只是对数字的key值作了约束,但是实现质填写数字这个要求是没有问题的!代码如下:
    ******************************************************************
    /*
     * Created on 2004-12-9
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    package num;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    /**
     * @author user
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class EnterNumber extends JFrame
    {
    JPanel panel;
    JTextField enterNum;
    public EnterNumber()
    {
    enterNum=new JTextField(5);
    enterNum.addKeyListener(new EnterAction());
    panel=new JPanel();
    getContentPane().add(panel);
    panel.add(enterNum);
    addWindowListener(new WindowAction());
    pack();
    setVisible(true);
    setLocation(300,300);
    }
    class WindowAction extends WindowAdapter
    {
    public void windowClosing(WindowEvent win_e)
    {
    System.exit(0);
    }
    }
    class EnterAction extends KeyAdapter
    {
    public void keyPressed(KeyEvent enter_e)
    {
    System.out.println(enter_e.getKeyCode());
    if(enter_e.getKeyCode()<48||enter_e.getKeyCode()>57)
    {
    JOptionPane.showMessageDialog(null,"请填写数字");
    enterNum.setText("");
    return;
    }
    }
    }
    public static void main(String args[])
    {
    new EnterNumber();
    }
    }
      

  4.   

    可以先getText(),
    如果发现不是数字,
    再提示重新输入吧
      

  5.   

    问一下楼主,这样的text多吗?如果多的话,可以使用继承制造一个自己的TextField,然后重载setText()方法,
    如果不是数字,就做什么什么样的操作。
    比如背景变成红色等等的操作。然后再用有这种要求的文本框的时候,
    就创建一个你自己的TextField的实例就可以了。
    good luck
      

  6.   

    不行啊 
    我也是用了处理KeyEvent事件的方法,行不通的
    你不信试试
    你们的这些也不行 啊
      

  7.   

    KeyListener test = new KeyListener(){
    public void keyTyped(KeyEvent e){
    char c = e.getKeyChar();
    if(Character.isDigit(c) || c==KeyEvent.VK_BACK_SPACE || c==KeyEvent.VK_DELETE)
    return;
    e.consume();
    }
    public void keyPressed(KeyEvent e){}
    public void keyReleased(KeyEvent e){}
    };只允许输入数字,你自己加上小数点和负号即可~~~
      

  8.   

    不好意思,最近没时间看java,所以结贴晚了,望各位原谅!!
    *^_^*