Java Swing How to - Create SpinnerListModel That Loops Through Its Values








Question

We would like to know how to create SpinnerListModel That Loops Through Its Values.

Answer

/* w  ww  . jav  a 2  s.co  m*/
import java.util.List;

import javax.swing.JSpinner;
import javax.swing.SpinnerListModel;

public class Main {
  public static void main(String[] argv) throws Exception {
    SpinnerCircularListModel listModel = new SpinnerCircularListModel(
        new String[] { "red", "green", "blue" });
    JSpinner spinner = new JSpinner(listModel);
  }
}

class SpinnerCircularListModel extends SpinnerListModel {
  public SpinnerCircularListModel(Object[] items) {
    super(items);
  }

  public Object getNextValue() {
    List list = getList();
    int index = list.indexOf(getValue());

    index = (index >= list.size() - 1) ? 0 : index + 1;
    return list.get(index);
  }

  public Object getPreviousValue() {
    List list = getList();
    int index = list.indexOf(getValue());

    index = (index <= 0) ? list.size() - 1 : index - 1;
    return list.get(index);
  }
}