当我尝试做一个JSpinner的不可编辑通过键盘或鼠标这样的:如何禁用JSpinner的键盘和鼠标输入?
((DefaultEditor) mySpinner.getEditor()).getTextField().setEditable(false);
mySpinner.setEnabled(false);
它禁止任何键盘输入和粘贴,但我仍然可以点击上/下按钮更改数值。
如何禁用上/下按钮?
当我尝试做一个JSpinner的不可编辑通过键盘或鼠标这样的:如何禁用JSpinner的键盘和鼠标输入?
((DefaultEditor) mySpinner.getEditor()).getTextField().setEditable(false);
mySpinner.setEnabled(false);
它禁止任何键盘输入和粘贴,但我仍然可以点击上/下按钮更改数值。
如何禁用上/下按钮?
如果微调器使用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)。
// 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());