猫博士

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  2 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks

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

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

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

 

 1    private class NumListener implements KeyListener {
 2        public void keyPressed(KeyEvent e) {
 3            // TODO Auto-generated method stub
 4
 5        }

 6
 7        public void keyReleased(KeyEvent e) {
 8            // TODO Auto-generated method stub
 9            
10        }

11
12        public void keyTyped(KeyEvent e) {
13            
14            char code = e.getKeyChar();
15            
16            if (isNumber(code)){
17                return;
18            }
 else {
19                e.consume();
20            }

21        }

22
23
24    }

25
26

 

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

 

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

13
14            return false;
15        }

16
17

 

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

 

posted on 2010-01-08 09:06 猫博士 阅读(192) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: