JSpinnerを直接入力不可にする

編集者:Terai Atsuhiro~

作成日:2004-07-20
更新日:2021-12-01 (水) 08:32:43
  • category: swing folder: SpinnerEditor title: JSpinnerを直接入力不可にする tags: [JSpinner] author: aterai pubdate: 2004-07-19T11:14:52+09:00 description: JSpinnerのエディタを編集不可にして、ボタンでしか値を変更できないようにします。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTTojxcMLI/AAAAAAAAAkw/BznS8i5Xfp4/s800/SpinnerEditor.png

概要

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

概要

JSpinnerのエディタを編集不可にして、ボタンでしか値を変更できないようにします。
http://terai.xrea.jp/swing/spinnereditor/screenshot.png

サンプルコード

#spanend
#spanadd
SpinnerModel model = new SpinnerNumberModel(10, 0, 1000, 1);
#spanend
#spanadd
JSpinner spinner = new JSpinner(model);
#spanend
#spanadd
JTextField field = ((JSpinner.DefaultEditor) spinner.getEditor()).getTextField();
#spanend
#spanadd
field.setEditable(false);
#spanend
#spanadd
field.setBackground(UIManager.getColor("FormattedTextField.background"));
#spanend
#spanadd
View in GitHub: Java, Kotlin

サンプルコード

SpinnerNumberModel model = new SpinnerNumberModel(10, 0, 1000, 1);
JSpinner spinner = new JSpinner(model);
((JSpinner.NumberEditor)spinner.getEditor()).getTextField().setEditable(false);

解説

解説

上記のサンプルでは、エディタにJSpinner.NumberEditorを使用しています。このエディタからTextFieldを取得し、setEditable(false)とすることで、直接キーボードから値を入力を禁止しています。
  • Default
    • デフォルトのJSpinner
  • spinner.setEnabled(false)
    • JSpinner#setEnabled(false)メソッドでJSpinner全体を編集不可に設定
  • field.setEnabled(false)
    • ( (JSpinner.DefaultEditor) spinner.getEditor()).getTextField()JSpinnerのテキスト入力欄を取得し、これをJTextComponent#setEditable(false)で編集不可に設定
    • 増減ボタンで値を変更可能だがキーボードでの値の入力は不可

コメント

参考リンク

コメント