沙漠中的魚

          欲上天堂,先下地獄
          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
          十分感謝!!!
          主站蜘蛛池模板: 北宁市| 德清县| 商丘市| 铅山县| 台前县| 石阡县| 阿坝| 承德县| 逊克县| 井研县| 托里县| 怀柔区| 邢台县| 克什克腾旗| 新兴县| 岳阳县| 南城县| 绥中县| 平利县| 沙坪坝区| 名山县| 贵溪市| 泾阳县| 宜章县| 翼城县| 镇远县| 五大连池市| 新源县| 高青县| 兴宁市| 朔州市| 宿松县| 桐柏县| 墨竹工卡县| 吕梁市| 兴国县| 阳信县| 平武县| 常德市| 滕州市| 南安市|