2011-06-23 19 views
9

'dan maximum'a kadar 0.1 adımlarına kadar değişebilen bir Jspinner kullanıyorum. Bu gayet iyi çalışıyor. Şimdi, 'un editörünü, kullanıcı metin kutusunu düzenleyebildiğinden ve yalnızca sayısal değerlerin bundan olmasını istediğim için NumberEditor olarak ayarladım. Bu da çalışıyor, yani kullanıcı girebiliyorsa, editör mySpinner.getValue().toString();'u kullanarak değeri aldığımda editördeki numaraları veriyor. Şimdi problemi çözüyor. Metin kutusunun yalnızca sayısal değerleri ve .(decimal point) kabul etmesini istiyorum, yani kullanıcı 0-9 ve .'dan başka bir şey girmeye çalışırsa, metin kutusunda yankılamamalıdır.JSpinner'ı tam olarak sayısal yap

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

Birisi bana bu konuda yardımcı olabilir. Teşekkür :)

+0

Benim yorumlarımdan dün – mKorbel

+0

ya okuduğumu söylüyorsun, okudum, '0.1' üzerinde adımlarla artırabilir ve azaltabilir, bu sorun çözüldü. Teşekkürler :) – Balanivash

cevap

24

aşağıdaki gibi setAllowsInvalid(false) deneyebilirsiniz:

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

bu özelliği ayarlayarak, JSpinner alanında tek geçerli değerleri göstermek ve kullanıcı tarafından girilen tüm diğer değerleri yok sayar olacaktır. Ayrıca kullanıcı, Jspinner'da girilen tüm değeri silemeyecektir, yani kullanıcı tüm değeri seçmeye ve silme işlemine izin verilmeyecekse, buna izin verilmeyecektir. Kullanıcı alanı sadece düzenlenebilir gibi görünecek başka bir geçerli değerle düzenleyebilir.

+0

Yani, bunu yaptıktan sonra, bunu 'JSpinner'ın testbox'ına bağlamak için bir şey yapmalı mıyım? – Balanivash

+0

no. Yapacak başka bir şey yok. –

+0

Bunun gibi, karakterleri girmeme izin vermez, ama sorun şu ki, bu benim ihtiyacım olan '' 'da girmeme izin vermiyor, ve alanı temizleyemem, her zaman en az bir sayı gerektiriyor, bu jFormattedTextField öğesinin bir özelliği – Balanivash

İlgili konular