沙漠中的魚

          欲上天堂,先下地獄
          posts - 0, comments - 56, trackbacks - 0, articles - 119
            BlogJava :: 首頁 ::  :: 聯系 :: 聚合  :: 管理

          JSpinner控制輸入

          Posted on 2009-03-16 22:40 沙漠中的魚 閱讀(1914) 評論(2)  編輯  收藏 所屬分類: Java

          最近用到JSpinner,但是不能控制用戶輸入。
          比如使用SpinnerNumberModel,雖然設置了min,max,但是還是可以輸入超出范圍的數值,還可以輸入字母,這些都應該是屏蔽掉的。
          采用了下面的方法來解決:

             JSpinner spinner = new JSpinner(new SpinnerNumberModel(value, min, max, 1));
             spinner.setBounds(x,y,width,height);
             // 控制輸入
             JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spinner, "0");
             spinner.setEditor(editor);
             JFormattedTextField textField = ((JSpinner.NumberEditor) spinner.getEditor())
               .getTextField();
             textField.setEditable(true);
             DefaultFormatterFactory factory = (DefaultFormatterFactory) textField
               .getFormatterFactory();
             NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter();
             formatter.setAllowsInvalid(false);
             add(spinner);
           
          這樣輸入就不可以輸入字母了,因為設置了輸入格式。超過范圍的數值也是輸入不進去的。
          其他的格式都應該是類似的吧,呵呵。
          只不過這里用的是NumberFormatter ,還有其他類型的。

           

          轉載:http://yangke1120.spaces.live.com/blog/cns!77b62010246eabc6!168.entry


          評論

          # re: JSpinner控制輸入  回復  更多評論   

          2010-09-08 12:40 by 路過人
          遇到同樣問題,搜了半天,終于搜到了,非常感謝!

          # re: JSpinner控制輸入  回復  更多評論   

          2011-07-06 13:48 by illusion
          十分感謝!!!
          主站蜘蛛池模板: 兰州市| 江孜县| 缙云县| 水富县| 汉寿县| 丹江口市| 江阴市| 阳春市| 闻喜县| 雷州市| 五峰| 翼城县| 辽阳县| 同仁县| 隆子县| 迭部县| 武定县| 韶关市| 屏南县| 云和县| 孝义市| 荃湾区| 谷城县| 伊金霍洛旗| 霍林郭勒市| 平阳县| 临夏县| 龙陵县| 南城县| 肃南| 武平县| 当雄县| 赣州市| 仲巴县| 乐亭县| 微山县| 宝丰县| 凤凰县| 大新县| 沾益县| 雷州市|