简体   繁体   English

Java Swing定制SpinnerNumberModel

[英]Java Swing customize SpinnerNumberModel

I want to change the SpinnerNumberModel of a JSpinner in a seperate class (eg MyNumberSpinner) 我想在一个单独的类中更改JSpinner的SpinnerNumberModel(例如MyNumberSpinner)

I use these values: 10(startvalue), 1(minimum), 500(maximum) and 10 (steps). 我使用以下值:10(初始值),1(最小),500(最大)和10(步长)。

Now I want it to go to the minimum(1) when im <11 and press the down arrow, but when i press the up arrow from the minimum(1) i want it to go to 10. 现在我希望它在im <11时达到最小值(1)并按向下箭头,但是当我从最小值(1)按向上箭头时我希望它达到10。

can u guys help me ? 你们可以帮我吗?

You may wish to use something that I just learned about by reading through the API: the SpinnerListModel . 您可能希望使用通过阅读API我刚刚学到的东西: SpinnerListModel This is a model which will accept any List<T> object, including for your purposes, a List<Integer> . 该模型将接受任何List<T>对象,包括List<Integer>

For example: 例如:

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);
   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM