Java Swing自定义SpinnerNumberModel

时间:2014-06-29 20:46:06

标签: java swing jspinner

我想在单独的类中更改JSpinner的SpinnerNumberModel(例如MyNumberSpinner)

我使用这些值:10(起始值),1(最小值),500(最大值)和10(步骤)。

现在我希望它在im <11时达到最小值(1)并按向下箭头,但是当我从最小值(1)按向上箭头时,我希望它转到10。

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可能希望通过阅读API来使用我刚学到的东西:SpinnerListModel。这是一个接受任何List<T>对象的模型,包括您的目的,List<Integer>

例如:

import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;
import javax.swing.JSpinner;
import javax.swing.SpinnerListModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SpinnerNumberFun2 {

   private static final int MAX_VALUE = 500;
   private static final int STEP = 10;

   public static void main(String[] args) {
      List<Integer> dataList = new ArrayList<Integer>();
      dataList.add(1);
      int index = 0;
      while (index < MAX_VALUE) {
         index += STEP;
         dataList.add(index);
      }

      SpinnerListModel myListModel = new SpinnerListModel(dataList);
      final JSpinner spinner = new JSpinner(myListModel);
      spinner.setValue(dataList.get(1));

      spinner.addChangeListener(new ChangeListener() {

         @Override
         public void stateChanged(ChangeEvent cEvt) {
            int value = ((Integer)spinner.getValue()).intValue();
            System.out.println("Value is: " + value);
         }
      });

      JOptionPane.showMessageDialog(null, spinner);
   }
}