Swing/CyclingSpinnerModel のバックアップの現在との差分(No.4)
- 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
サンプルコード
サンプルコード
#spandel
spinner.setModel(new SpinnerNumberModel(20, 0, 59, 1) {
#spanend
#spanadd
spinner03.setModel(new SpinnerNumberModel(20, 0, 59, 1) {
#spanend
@Override public Object getNextValue() {
Object n = super.getNextValue();
if(n==null) n = getMinimum();
return n;
return Objects.nonNull(n) ? n : getMinimum();
}
#spanadd
#spanend
@Override public Object getPreviousValue() {
Object n = super.getPreviousValue();
if(n==null) n = getMaximum();
return n;
return Objects.nonNull(n) ? n : getMaximum();
}
});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、各モデルのgetNextValue
、getPreviousValue
メソッドをオーバーライドすることでループするように設定しています。
解説
上記のサンプルでは、各SpinnerModel
のgetNextValue()
、getPreviousValue()
メソッドをオーバーライドすることで、例えば下限値に達した場合は上限値にループするよう設定しています。
参考リンク
- Creating Custom Spinner Models and Editors
- 数値モデル(
SpinnerNumberModel
)-
SpinnerNumberModel#getNextValue()
などがnull
になる場合SpinnerNumberModel#getMinimum()
で最小値を取得してループ
-
- リストモデル(
SpinnerListModel
)-
SpinnerListModel#getNextValue()
などがnull
になる場合SpinnerListModel#getList()#get(0)
でリスト先頭の取得してループ#spanend #spanadd spinner04.setModel(new SpinnerListModel(weeks) { #spanend @Override public Object getNextValue() { Object o = super.getNextValue(); return Objects.nonNull(o) ? o : getList().get(0); } #spandel * コメント [#d1f3740f] #spanend @Override public Object getPreviousValue() { List l = getList(); Object o = super.getPreviousValue(); return Objects.nonNull(o) ? o : l.get(l.size() - 1); } #spanadd }); #spanend #spanadd
-