2011-06-23 24 views
9

Tôi có một Jspinner có thể thay đổi từ minimum đến maximum ở các bước của 0.1. Điều này làm việc hoàn toàn tốt đẹp. Bây giờ, tôi đặt trình chỉnh sửa của JSpinnerNumberEditor khi người dùng có thể chỉnh sửa hộp văn bản và tôi chỉ muốn giá trị số từ này. Điều này cũng làm việc, đó là bất cứ điều gì người dùng có thể nhập, trình soạn thảo chỉ cho tôi số trong trình chỉnh sửa khi tôi nhận được giá trị sử dụng mySpinner.getValue().toString();. Bây giờ cones vấn đề. Tôi muốn hộp văn bản chỉ chấp nhận giá trị số và .(decimal point), tức là nếu người dùng cố gắng nhập bất kỳ thứ gì ngoài 0-9., nó sẽ không lặp lại nó trong hộp văn bản.Làm cho JSpinner hoàn toàn là số

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

Ai đó có thể giúp tôi với điều này. Cảm ơn :)

+0

bạn có đọc nhận xét của tôi cho bài đăng của bạn từ ngày hôm qua – mKorbel

+0

ya, tôi đọc nó, tôi có thể tăng và giảm theo các bước trên '0.1', vấn đề đó đã được giải quyết. Cảm ơn :) – Balanivash

Trả lời

24

Bạn có thể thử setAllowsInvalid(false) như sau:

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

Bằng cách đặt thuộc tính này, các Jspinner sẽ hiển thị giá trị chỉ có giá trị trong lĩnh vực này và bỏ qua tất cả các giá trị khác được nhập vào bởi người sử dụng. cũng người dùng sẽ không thể xóa toàn bộ giá trị được nhập trong Jspinner tức là nếu người dùng cố gắng chọn toàn bộ giá trị và xóa nó sẽ không được cho phép. Người dùng chỉ có thể chỉnh sửa trường bằng một giá trị hợp lệ khác mà nó có vẻ không thể chỉnh sửa được.

+0

Vì vậy, sau khi làm điều này, tôi nên làm bất cứ điều gì để liên kết này với testbox 'JSpinner' của tôi? – Balanivash

+0

không. không có gì khác để làm. –

+0

Như thế này không cho phép tôi nhập ký tự, nhưng vấn đề là, điều này không cho phép tôi nhập '.' cũng, mà tôi cần, và tôi không thể xóa trường, yêu cầu ít nhất một số một thuộc tính của 'JFormattedTextField' – Balanivash

Các vấn đề liên quan