Swing/SpinnerEditor のバックアップの現在との差分(No.17)
- category: swing folder: SpinnerEditor title: JSpinnerを直接入力不可にする tags: [JSpinner] author: aterai pubdate: 2004-07-19T11:14:52+09:00 description: JSpinnerのエディタを編集不可にして、ボタンでしか値を変更できないようにします。 image:
概要
JSpinner
のエディタを編集不可にして、ボタンでしか値を変更できないようにします。
Screenshot
Advertisement
サンプルコード
#spandel
SpinnerNumberModel model = new SpinnerNumberModel(10, 0, 1000, 1);
#spanend
#spanadd
SpinnerModel model = new SpinnerNumberModel(10, 0, 1000, 1);
#spanend
JSpinner spinner = new JSpinner(model);
#spandel
//UIManager.put("FormattedTextField.inactiveBackground", Color.RED);
#spanend
#spandel
JTextField field = ((JSpinner.NumberEditor) spinner.getEditor()).getTextField();
#spanend
#spanadd
JTextField field = ((JSpinner.DefaultEditor) spinner.getEditor()).getTextField();
#spanend
field.setEditable(false);
field.setBackground(UIManager.getColor("FormattedTextField.background"));
View in GitHub: Java, Kotlin解説
上記のサンプルでは、「直接編集不可」の場合、上下ボタンで値を変更することはできますが、直接キーボードから値を入力することができないように設定しています。JSpinner
の編集可・不可を変更するのではなく、JSpinner
で使用するエディタから取得したJTextField
の編集可・不可を切り替えています。
-
Default
- デフォルトの
JSpinner
- デフォルトの
-
spinner.setEnabled(false)
-
JSpinner#setEnabled(false)
メソッドでJSpinner
全体を編集不可に設定
-
-
field.setEnabled(false)
-
( (JSpinner.DefaultEditor) spinner.getEditor()).getTextField()
でJSpinner
のテキスト入力欄を取得し、これをJTextComponent#setEditable(false)
で編集不可に設定 - 増減ボタンで値を変更可能だがキーボードでの値の入力は不可
-