• category: swing folder: ReverseDirectionSpinner title: JSpinnerの矢印ボタンによる増減方向を入れ替える tags: [JSpinner, SpinnerNumberModel, SpinnerListModel] author: aterai pubdate: 2020-07-20T02:56:59+09:00 description: JSpinnerの矢印ボタンをクリックした場合の値の増減、または前次の方向を入れ替えます。 image: https://drive.google.com/uc?id=1j0E3gvCn6ljBBqAu6CjIbunUZwhW2h0s

概要

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

サンプルコード

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 in GitHub: Java, Kotlin

解説

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

参考リンク

コメント