Posted on 2009-03-16 22:40
沙漠中的魚 閱讀(1909)
評論(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