我在用JBuilder开发项目时遇到一个问题,就是要求:对于JTextField只能输入诸如1,2,3,35,567....之类的数字形式的字符串,而对于字符类型的字符串,如:"qwe","wert".....刚不能输入,请问代码如何实现?
谢谢各位大虾!!:)

解决方案 »

  1.   

    加一个KEYPRESS的事键监听器,取得值,判断是不是在0~9
      

  2.   

    import javax.swing.*;
    import javax.swing.text.*;
    import javax.swing.event.*;
    import java.awt.*;
    import java.awt.event.*;
    public class MyTextField extends JTextField
    {
       public MyTextField()
       {
         super();
       }
        public MyTextField(int len)
       {
         super(len);
       }
        public MyTextField(String str_text,int len)
       {
         super(str_text,len);
       }
      protected Document createDefaultModel() {
        return new NumberOnlyDocument();
      } static class NumberOnlyDocument extends PlainDocument
     {
       public void insertString(int offs, String str, AttributeSet a)
       throws BadLocationException
       {
         if (str == null) 
     {
           return;
          }
         char[] upper = str.toCharArray();
         int length=0;
         for (int i = 0; i < upper.length; i++)
     {
           if (upper[i]>='0'&&upper[i]<='9')
       {
              upper[length++] = upper[i];
           }
         }
         super.insertString(offs, new String(upper,0,length), a);
       }
     }
     }
      

  3.   

    在提交的时候对text框中的数据做个判断,返回false即输入不合法,true为合法
       public boolean isCode(String strIn) {
            for (int i = 0; i < strIn.length(); i++) {
                if (!((strIn.charAt(i) >= '0' && strIn.charAt(i) <= '9')
                      || (strIn.charAt(i) >= 'a' && strIn.charAt(i) <= 'z')
                      || (strIn.charAt(i) >= 'A' && strIn.charAt(i) <= 'Z'))) {
                    return false;
                }
            }
            return true;
        }
      

  4.   

    onkeypress="return event.keyCode>=48&&event.keyCode<=57||(this.value.indexOf('.')<0?event.keyCode==46:false)" onpaste="return !clipboardData.getData('text').match(/\D/)" ondragenter="return false"
      

  5.   

    class name extends KeyAdapter{
    public void keyPressed(KeyEvent e){
       char c = e.getKeyChar();
       if(!Character.isDigit(c)){
          if(e.getKeyCode() == e.VK_BACK_SPACE)
    ;//the back space can not be consumed!
          else
    e.consume(); 
    }
      }

    }
    最后在jTextField 添加 jtf.addKeyListener(new name());
    一切OK了,