6

JSpinnerを次のようにキーボードまたはマウスで編集できないようにしようとすると、次のようになります。

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

キーボードの入力と貼り付けは無効になりますが、上/下ボタンをクリックして値を変更することはできます。

上/下ボタンを無効にするにはどうすればよいですか?

4

2 に答える 2

2

スピナーが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)。

于 2011-08-22T18:15:13.197 に答える
-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());
于 2015-10-28T14:33:52.720 に答える