概要

JSpinnerの矢印ボタンをクリックした場合の値の増減、または前次の方向を入れ替えます。

スクリーンショット

Swing/ReverseDirectionSpinner.png

サンプルコード

JSpinner spinner0 = new JSpinner(new SpinnerNumberModel(5, 0, 10, 1));

JSpinner spinner1 = new JSpinner(new SpinnerNumberModel(5, 0, 10, -1));

String[] scale = {
  "AAA", "AA+", "AA", "AA-", "A+", "A", "A-",
  "BBB+", "BBB", "BBB-", "BB+", "BB", "BB-", "B+", "B", "B-",
  "CCC+", "CCC", "CCC-", "CC", "R", "D"
};
JSpinner spinner2 = new JSpinner(new SpinnerListModel(scale));

JSpinner spinner3 = new JSpinner(new SpinnerListModel(scale) {
  @Override public Object getNextValue() {
    return super.getPreviousValue();
  }

  @Override public Object getPreviousValue() {
    return super.getNextValue();
  }
});
view all

解説

  • stepSize: 1
    • SpinnerNumberModelでシーケンスの要素間の差を正の値に設定
  • stepSize: -1
    • SpinnerNumberModelでシーケンスの要素間の差を負の値に設定
    • getNextValue()メソッドとgetPreviousValue()メソッドによって計算される値変更のサイズがマイナスになるので上矢印ボタンをクリックすると数値は減少、下矢印ボタンで増加に入れ替わる
  • SpinnerListModel
    • 上矢印ボタンのクリックで前の値、下矢印ボタンで次の値を返す
    • デフォルト
  • Reverse direction SpinnerListModel
    • SpinnerListModel#getNextValue()メソッドとSpinnerListModel#getPreviousValue()メソッドを入れ替えるようオーバーライドして上矢印ボタンのクリックで次の値、下矢印ボタンで前の値を返すよう変更

参考リンク

コメント