2011-08-01 28 views
6

Khi tôi cố gắng để thực hiện một JSpinner un thể chỉnh sửa bằng bàn phím hoặc chuột như thế này:Làm cách nào để tắt bàn phím và chuột cho JSpinner?

((DefaultEditor) mySpinner.getEditor()).getTextField().setEditable(false); 
mySpinner.setEnabled(false); 

Nó vô hiệu hóa bất kỳ mục bàn phím và dán, nhưng tôi vẫn có thể bấm lên/xuống nút và thay đổi giá trị.

Làm cách nào để vô hiệu hóa nút lên/xuống?

Trả lời

1

Nếu spinner sử dụng JSpinner.DefaultEditor hoặc phân lớp của nó thì mã sau hoạt động (tắt điều hướng bàn phím, nút spinner không hoạt động, nhưng có thể chọn và sao chép giá trị được hiển thị trong spinner).

JSpinner component = ...; 

component.setEnabled(false); 
if (component.getEditor() instanceof JSpinner.DefaultEditor) { 
    JSpinner.DefaultEditor editor = (JSpinner.DefaultEditor) component.getEditor(); 
    editor.getTextField().setEnabled(true); 
    editor.getTextField().setEditable(false); 
} 

Nếu spinner có một trình soạn thảo tuỳ chỉnh với một cái gì đó khác sau đó JTextComponent, sau đó nó có lẽ vẫn có thể sử dụng phương pháp tương tự (vô hiệu hóa các spinner, kích hoạt lại các thành phần thực tế được sử dụng bởi các biên tập viên spinner, nhãn hiệu đó thành phần là chỉ đọc bằng API của nó).

-1
// Disabling mouse input without desabling the JSpinner itself 
JSpinner spinner = ...; 
// set the minimum and maximum values to the current value, 
// thus preventing changes to the spinner's current value 
SpinnerNumberModel snm = (SpinnerNumberModel) spinner.getModel(); 
snm.setMinimum((Integer)spinner.getValue()); 
snm.setMaximum((Integer)spinner.getValue()); 
Các vấn đề liên quan