10

我有一个 Jspinner,minimum可以maximum0.1. 这工作得很好。现在,我将编辑器设置JSpinner为 as NumberEditor,因为用户可以编辑文本框,我只想要其中的数值。这也是有效的,即用户可以输入的任何内容,当我使用mySpinner.getValue().toString();. 现在解决问题。我希望文本框只接受数字值 and .(decimal point),也就是说,如果用户尝试输入除0-9and之外的任何内容.,它不应该在文本框中回显它。

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

有人可以帮我弄这个吗。谢谢 :)

4

1 回答 1

27

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

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

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

于 2011-06-23T04:50:45.740 回答