Swing/CyclingSpinnerModel のバックアップの現在との差分(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - 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)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JSpinnerのモデルの値をループさせる #navi(../) RIGHT:Posted by [[terai]] at 2010-02-01 *JSpinnerのモデルで値が最大、最小を超えるとループするように設定します。 [#t324de89] --- category: swing folder: CyclingSpinnerModel title: JSpinnerのモデルの値をループさせる tags: [JSpinner, SpinnerNumberModel] author: aterai pubdate: 2010-02-01T01:53:39+09:00 description: JSpinnerのモデルで値が最大、最小を超えるとループするように設定します。 image: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTKYcCKxAI/AAAAAAAAAV4/T8OdovAF6EY/s800/CyclingSpinnerModel.png --- * 概要 [#summary] `JSpinner`のモデルで値が最大、最小を超えるとループするように設定します。 -&jnlp; -&jar; -&zip; #download(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTKYcCKxAI/AAAAAAAAAV4/T8OdovAF6EY/s800/CyclingSpinnerModel.png) #screenshot **サンプルコード [#ld341dbc] #code{{ spinner.setModel(new SpinnerNumberModel(20, 0, 59, 1) { public Object getNextValue() { * サンプルコード [#sourcecode] #code(link){{ spinner03.setModel(new SpinnerNumberModel(20, 0, 59, 1) { @Override public Object getNextValue() { Object n = super.getNextValue(); if(n==null) n = getMinimum(); return n; return Objects.nonNull(n) ? n : getMinimum(); } public Object getPreviousValue() { @Override public Object getPreviousValue() { Object n = super.getPreviousValue(); if(n==null) n = getMaximum(); return n; return Objects.nonNull(n) ? n : getMaximum(); } }); }} **解説 [#m44dfbfa] 上記のサンプルでは、各モデルのgetNextValue、getPreviousValueメソッドをオーバーライドすることでループするように設定しています。 * 解説 [#explanation] 上記のサンプルでは、各`SpinnerModel`の`getNextValue()`、`getPreviousValue()`メソッドをオーバーライドすることで、例えば下限値に達した場合は上限値にループするよう設定しています。 **参考リンク [#w63c8b19] - [[Creating Custom Spinner Models and Editors>http://java.sun.com/docs/books/tutorial/uiswing/components/spinner.html#model]] - 数値モデル(`SpinnerNumberModel`) -- `SpinnerNumberModel#getNextValue()`などが`null`になる場合`SpinnerNumberModel#getMinimum()`で最小値を取得してループ - リストモデル(`SpinnerListModel`) -- `SpinnerListModel#getNextValue()`などが`null`になる場合`SpinnerListModel#getList()#get(0)`でリスト先頭の取得してループ #code{{ spinner04.setModel(new SpinnerListModel(weeks) { @Override public Object getNextValue() { Object o = super.getNextValue(); return Objects.nonNull(o) ? o : getList().get(0); } **コメント [#d1f3740f] @Override public Object getPreviousValue() { List l = getList(); Object o = super.getPreviousValue(); return Objects.nonNull(o) ? o : l.get(l.size() - 1); } }); }} * 参考リンク [#reference] - [https://docs.oracle.com/javase/tutorial/uiswing/components/spinner.html#model Creating Custom Spinner Models and Editors] * コメント [#comment] #comment #comment