TITLE:JSpinnerのモデルの値をループさせる
Posted by terai at 2010-02-01

JSpinnerのモデルで値が最大、最小を超えるとループするように設定します。

  • 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

概要

JSpinnerのモデルで値が最大、最小を超えるとループするように設定します。

#screenshot

サンプルコード

#spanend
#spandel
spinner.setModel(new SpinnerNumberModel(20, 0, 59, 1) {
#spanend
  public Object getNextValue() {
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#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();
  }
  public Object getPreviousValue() {
#spanadd

#spanend
  @Override public Object getPreviousValue() {
    Object n = super.getPreviousValue();
    if(n==null) n = getMaximum();
    return n;
    return Objects.nonNull(n) ? n : getMaximum();
  }
});

解説

上記のサンプルでは、各モデルのgetNextValue、getPreviousValueメソッドをオーバーライドすることでループするように設定しています。

解説

上記のサンプルでは、各SpinnerModelgetNextValue()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
      

参考リンク

コメント