2011-08-01 89 views
6

当我尝试做一个JSpinner的不可编辑通过键盘或鼠标这样的:如何禁用JSpinner的键盘和鼠标输入?

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

它禁止任何键盘输入和粘贴,但我仍然可以点击上/下按钮更改数值。

如何禁用上/下按钮?

回答

1

如果微调器使用JSpinner.DefaultEditor或其子类,则以下代码有效(禁用键盘导航,微调按钮不起作用,但可以选择并复制微调器中显示的值)。

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); 
} 

如果微调与其他的东西,然后JTextComponent的自定义编辑器,那么它很可能还是可以使用同样的方法(禁用微调,重新启用微调编辑器使用的实际分量,标志是组件只读使用其API)。

-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());