貓博士

            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 貓博士 閱讀(211) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 教育| 南安市| 含山县| 肇东市| 云霄县| 海安县| 阜新市| 睢宁县| 沙田区| 迁西县| 当雄县| 海阳市| 玛曲县| 含山县| 咸阳市| 兴业县| 沙洋县| 志丹县| 尼勒克县| 林州市| 上林县| 溆浦县| 武功县| 呈贡县| 自治县| 鄱阳县| 钟山县| 讷河市| 邯郸县| 田阳县| 黑河市| 金阳县| 广丰县| 那曲县| 苍南县| 新安县| 清苑县| 丽水市| 习水县| 棋牌| 肃北|