2011-06-23 26 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