当我尝试通过这样的键盘或鼠标使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)。

关于java - 如何禁用JSpinner的键盘和鼠标输入?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6904326/

10-12 01:30