开发者

Make JSpinner completely numeric

I've a Jspinner that can vary from minimum to maximum at steps of 0.1. This is working perfectly fine. Now, I set the editor of JSpinner as NumberEditor as the user can edit the textbox and I want only numeric values from this. This is also working, that is whatever the user may enter, the editor gives me only the numbers in the editor when I get the v开发者_如何学Pythonalue using mySpinner.getValue().toString();. Now cones the problem. I want the textbox to accept only numeric values and .(decimal point), that is, if the user tries to enter anything apart from 0-9 and ., it should not echo it in the textbox.

JSpinner mySpinner = new JSpinner();
mySpinner.setModel(new SpinnerNumberModel(default,minimum,maximum,0.1));
mySpinner.setEditor(new JSpinner.NumberEditor(mySpinner,"##.#"));

Can someone help me with this. Thanks :)


You could try setAllowsInvalid(false) as follows:

JFormattedTextField txt = ((JSpinner.NumberEditor) mySpinner.getEditor()).getTextField();
((NumberFormatter) txt.getFormatter()).setAllowsInvalid(false);

By setting this property, the Jspinner will show only valid values in the field and ignores all other values entered by the user. also the user will not be able to delete the whole value entered in the Jspinner i.e. if the user tries to select the entire value and delete it will not be allowed. User can edit the field only with a valid value other wise the it will seem like un-editable.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜