貓博士

            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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 临桂县| 塘沽区| 漠河县| 宁乡县| 偏关县| 芜湖市| 平安县| 琼海市| 建湖县| 来宾市| 佛山市| 元江| 奎屯市| 灵寿县| 鄂尔多斯市| 宣恩县| 曲阜市| 扶绥县| 临湘市| 衢州市| 深州市| 营山县| 洞口县| 五台县| 通江县| 崇左市| 乌拉特前旗| 山丹县| 弋阳县| 涞水县| 江达县| 广灵县| 鲁山县| 得荣县| 喀喇| 高雄县| 长岭县| 潢川县| 盐源县| 五指山市| 宝兴县|