2014-06-29 41 views
0

我想改變JSpinner的SpinnerNumberModel的在一個單獨的類別(例如MyNumberSpinner)的Java Swing定製SpinnerNumberModel的

我使用這些值:10(在startValue),1(最小),500(最大)和10(腳步)。

現在我希望它去到最低(1)當IM < 11,按向下箭頭,但是當我按向上箭頭從最小值(1)我想它去10

你可以幫我嗎?

+0

請拼出一個更清晰一點你想該怎麼做,你的代碼已經嘗試過什麼到目前爲止,等等......你創建了自己的SpinnerModel一個擴展AbstractSpinnerModel? –

+0

到目前爲止您嘗試過什麼?你有沒有讀過這些模型類的JavaDocs? – MadProgrammer

回答

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