2011-06-23 12 views
9

我有一个Jspinner,它可以从minimummaximum,步骤为0.1。这工作得很好。现在,我将JSpinner的编辑器设置为NumberEditor,因为用户可以编辑文本框,并且我只需要这个数字值。这也是可行的,也就是说,无论用户输入什么内容,当我使用mySpinner.getValue().toString();获得值时,编辑器只给出编辑器中的数字。现在解决这个问题。我希望文本框只接受数字值并且.(decimal point),也就是说,如果用户尝试输入除0-9.以外的任何内容,则不应在文本框中回显它。让JSpinner完全数字化

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

有人可以帮助我解决这个问题。谢谢:)

+0

您是否看过我对您昨日的帖子的评论 – mKorbel

+0

ya,我读过了,我可以在'0.1'上逐步递增和递减,那个问题就解决了。谢谢:) – Balanivash

回答

24

你可以尝试setAllowsInvalid(false)如下:

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

通过设置这个属性时,将JSpinner的显示领域唯一有效的值,并忽略用户输入的所有其他值。用户也将无法删除在Jspinner中输入的整个值,即如果用户尝试选择整个值并删除它将不被允许。用户只能使用有效的值编辑字段,否则它看起来像不可编辑。

+0

因此,在做完这些之后,我应该做些什么来将它与我的'JSpinner'的测试箱链接起来? – Balanivash

+0

没有。没有别的事可做。 –

+0

像这样不允许我输入字符,但问题是,这不允许我输入'.',也是我需要的,并且我不能清除该字段,一直需要至少一个数字,这是'JFormattedTextField'的属性是 – Balanivash