Swing/CyclingSpinnerModel のバックアップ(No.8)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CyclingSpinnerModel へ行く。
- 1 (2010-02-01 (月) 01:53:39)
- 2 (2012-08-11 (土) 21:01:12)
- 3 (2013-01-02 (水) 14:32:49)
- 4 (2015-01-01 (木) 21:39:39)
- 5 (2016-05-06 (金) 15:48:18)
- 6 (2017-04-04 (火) 14:17:08)
- 7 (2017-08-03 (木) 15:43:40)
- 8 (2018-08-07 (火) 14:34:46)
- 9 (2020-08-06 (木) 12:17:42)
- 10 (2021-12-23 (木) 17:19:08)
- 11 (2023-09-19 (火) 16:04:07)
- category: swing folder: CyclingSpinnerModel title: JSpinnerのモデルの値をループさせる tags: [JSpinner, SpinnerNumberModel] author: aterai pubdate: 2010-02-01T01:53:39+09:00 description: JSpinnerのモデルで値が最大、最小を超えるとループするように設定します。 image:
概要
JSpinner
のモデルで値が最大、最小を超えるとループするように設定します。
Screenshot
Advertisement
サンプルコード
spinner03.setModel(new SpinnerNumberModel(20, 0, 59, 1) {
@Override public Object getNextValue() {
Object n = super.getNextValue();
return Objects.nonNull(n) ? n : getMinimum();
}
@Override public Object getPreviousValue() {
Object n = super.getPreviousValue();
return Objects.nonNull(n) ? n : getMaximum();
}
});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、各SpinnerModel
のgetNextValue()
、getPreviousValue()
メソッドをオーバーライドすることで、例えば下限値に達した場合は上限値にループするよう設定しています。
- 数値:
SpinnerNumberModel
SpinnerNumberModel#getNextValue()
などがnull
になる場合、SpinnerNumberModel#getMinimum()
で最小値を取得してループ
- リスト:
SpinnerListModel
SpinnerListModel#getNextValue()
などがnull
になる場合、SpinnerListModel#getList()#get(0)
でリスト先頭の取得してループ
spinner04.setModel(new SpinnerListModel(weeks) {
@Override public Object getNextValue() {
Object o = super.getNextValue();
return Objects.nonNull(o) ? o : getList().get(0);
}
@Override public Object getPreviousValue() {
List l = getList();
Object o = super.getPreviousValue();
return Objects.nonNull(o) ? o : l.get(l.size() - 1);
}
});