概要

JSpinnerのエディタを編集不可にして、ボタンでしか値を変更できないようにします。

サンプルコード

SpinnerNumberModel model = new SpinnerNumberModel(10, 0, 1000, 1);
JSpinner spinner = new JSpinner(model);
//UIManager.put("FormattedTextField.inactiveBackground", Color.RED);
JTextField field = ((JSpinner.NumberEditor) spinner.getEditor()).getTextField();
field.setEditable(false);
field.setBackground(UIManager.getColor("FormattedTextField.background"));
view all

解説

  • Default
    • デフォルトのJSpinner
  • spinner.setEnabled(false)
    • JSpinner#setEnabled(false)JSpinner全体を編集不可に設定
  • field.setEnabled(false)
    • ( (JSpinner.NumberEditor) spinner.getEditor() ).getTextField()JSpinnerのテキスト入力欄を取得し、これをJTextField#setEditable(false)で編集不可に設定
    • 上下ボタンで値を変更可能だが、キーボードでの値の入力は不可

参考リンク

コメント