正在做的东西也有类似的问题,关注一下,到时候自己可以省不少事。
我手中有一个程序就有这个功能,是VB写的,可是没源码,我现在的任务就是根据这个程序的功能用JAVA全部改写,累死了

解决方案 »

  1.   

    可以试试下述代码,不一定成功
    try
    {
    //如果可以转换成功,表示字符合法
    double temp=Double.valueof(tf.getText());
    }
    catch(Exception)
    {
    //如果出现异常,表示这里面的字符有非法字符
    }
      

  2.   

    swing里面有一个JFormattedTextField,可以实现~
    setFormatter(JFormattedTextField.AbstractFormatter format) 
             
    setFormatterFactory(JFormattedTextField.AbstractFormatterFactory tf)  这两个方法来设定Formatter
      

  3.   

    我手头上这个VB程序里是在输入的时候就限制了,比如只能如数数字的地方,你按字母的话在TEXTFIELD里根本就不显示
      

  4.   

    textfield.addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e) {    if (textfield.getText().length() > 10) {
          e.consume(); //超过10个,不让这个出入进入JTextField
        }    int keyCode = e.getKeyCode();
        //判断这个输入是否合法
        switch (keyCode) {
          case KeyEvent.VK_XXXXXXXXXXX: //OK
          case ......
               break;
          default:
               //不合法
               e.consume(); //IMPORTANT,不让这个出入进入JTextField
        }
      }
    });
      

  5.   

    to: nwpulipeng(夜听春雨) 正则表达式该怎么写呢?没用过不熟悉
      

  6.   

    谢谢大家,我最后用的办法是:
    jTextField3.addKeyListener(new CheckComponent_jTextField1_keyAdaptert(this));
    class CheckComponent_jTextField1_keyAdaptert extends java.awt.event.KeyAdapter {
       Frame1 adaptee;   CheckComponent_jTextField1_keyAdaptert(Frame1 adaptee) {
         this.adaptee = adaptee;
       }
       public void keyTyped(KeyEvent e) {
         adaptee.jTextField1_keyTyped(e);
       }
      
     }  
      void jTextField1_keyTyped(KeyEvent e) {
                  
                   Object o = e.getSource();               if (o instanceof JTextField){
                     JTextField jtf=(JTextField)o;
                     char keyCh = e.getKeyChar();
                     int x=0;
                     
                     if ((keyCh >= '0')&&(keyCh <= '9')){                 }
                     else if(keyCh=='.')
                     {
                        for(int i=0;i<jtf.getText().length();i++)
                          if(jtf.getText().charAt(i)=='.')
                           { x++; System.out.println(x);}
                            if (x> 0) 
                           e.consume();
                      }
                     else
                        e.consume();
              }
        }Frame1是放jTextField3的jframe