JTextField限制 输入数字 【转】
原文:http://blog.sina.com.cn/s/blog_46fb85920100mi1m.html
貌似有很多方法,先记了再说...
1.限制输入数字
用法 textfield.setDocument(new IntegerDocument());
class IntegerDocument extends PlainDocument
{
public void insertString(int offset, String s, 
AttributeSet attributeSet) throws BadLocationException
{
try
{
Integer.parseInt(s);
}
catch(Exception ex)
{
Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offset, s, attributeSet);
}
}
2.限制输入数字和长度
public class NumberLenghtLimitedDmt extends PlainDocument {
   private int limit; 
   public NumberLenghtLimitedDmt(int limit) {
    super();
       this.limit = limit;
    } 
   public void insertString
     (int offset, String str, AttributeSet attr)
                                   throws BadLocationException {   
       if (str == null){
        return;
       }
       if ((getLength() + str.length()) <= limit) {
     
       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(offset, new String(upper,0,length), attr);
      }
    }
}
用法:
JTextField text=new JTextField();
text.setDocument(new NumberLenghtLimitedDmt(7));
那么这个文本框只能输入7位而且是只能是数字!!!
3.添加KeyListener
public void keyTyped(KeyEvent e)
    {
     if ((e.getKeyChar() >= e.VK_0 && e.getKeyChar() <= e.VK_9) 
      || e.getKeyChar() == e.VK_ENTER || e.getKeyChar() == e.VK_TAB
      || e.getKeyChar() == e.VK_BACK_SPACE || e.getKeyChar() == e.VK_DELETE 
      || e.getKeyChar() == e.VK_LEFT || e.getKeyChar() == e.VK_RIGHT 
      || e.getKeyChar() == e.VK_ESCAPE) 
      return;   
     e.consume();
    }
4.使用JFormattedTextField
5.貌似还能用正则表达式 - - 还不会玩,等学了补充下
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号