TextFiled怎样只能让其输入数字

  某烤白马问我怎样在一个Java窗体里面只能输入数字。这个问题我以前在做Web项目的时候碰到过,是采用的JS监听键盘的方式做的。但是在窗体里面怎么做,还没有做过。

  不知道很简单,百老师跟谷老师都是好老师。于是找了下。

  在CSDN上面看到有人有同样的问题,点此查看。看了下知道了原来可以采用PlainDocument接口的方式实现,但是我看了下代码,好像是输入之后再去做判断,如果不是汉字就去掉该字符。好像有点不符合需求。另外一个方式是采用监听器的方式。看了下,参照他的代码写了一段自己的代码。

 

监听键盘事件代码
    private class NumListener implements KeyListener {
        
public void keyPressed(KeyEvent e) {
            
// TODO Auto-generated method stub

        }

        
public void keyReleased(KeyEvent e) {
            
// TODO Auto-generated method stub
            
        }

        
public void keyTyped(KeyEvent e) {
            
            
char code = e.getKeyChar();
            
            
if (isNumber(code)){
                
return;
            } 
else {
                e.consume();
            }
        }


    }

 

对比一下CSDN上那位兄弟的回答,我这里少了很多,不知道会不会有什么问题。说实话,我不明白他为什么要判断输入框的类型。而判断是否是数字的代码我觉得还可以采用正则表达式,也改造了一下。

 

判断是否为数字
    private static Pattern NUM_PATTERN = Pattern.compile("\\d*");
        
protected boolean isNumber(char code) {
//            if ((code == '0') || (code == '1') || (code == '2')
//                    || (code == '3') || (code == '4') || (code == '5')
//                    || (code == '6') || (code == '7') || (code == '8')
//                    || (code == '9')){
//                return true;
//            }
            Matcher matcher = NUM_PATTERN.matcher(String.valueOf(code));
            
if (matcher.matches()){
                
return true;
            }

            
return false;
        }

 

 

代码还是需要完善,还有对于复制粘贴没有处理。

 

posted @ 2010-01-07 17:20  猫博士  阅读(480)  评论(2编辑  收藏  举报