2015-06-29 16 views
0

帶overriden的自定義spinnerdatemodel getPrevious()和getNext()沒有做任何事情。我究竟做錯了什麼?自定義spinnerdatemodel沒有做任何事情

這是我的代碼。這對我來說是正確的;所以是的,任何幫助將不勝感激。謝謝!

/** 
* Custom spinner model for the times (hhmm) 
*/ 
class SpinnerTimeModel extends SpinnerDateModel { 

    /** 
    * Constructor 
    */ 
    public SpinnerTimeModel() { 
     cal = Calendar.getInstance(); 
     cal.set(Calendar.HOUR_OF_DAY, 0); 
     cal.set(Calendar.MINUTE, 0); 
     setValue(cal.getTime()); 
     setStart(cal.getTime()); 
     cal.set(Calendar.HOUR_OF_DAY, 23); 
     cal.set(Calendar.MINUTE, 59); 
     setEnd(cal.getTime()); 
    } 

    /** 
    * Returns a time 30 minutes prior to the current time 
    * 
    * @return a time 30 minutes prior to the current time 
    */ 
    @Override 
    public Object getPreviousValue() { 
     Calendar previous = Calendar.getInstance(); 
     previous.setTime(getDate()); 
     previous.add(Calendar.MINUTE, -30); 
     return previous.getTime(); 
    } 

    /** 
    * Returns a time 30 minutes after the current time 
    * 
    * @return a time 30 minutes after the current time 
    */ 
    @Override 
    public Object getNextValue() { 
     Calendar next = Calendar.getInstance(); 
     next.setTime(getDate()); 
     next.add(Calendar.MINUTE, 30); 
     return next.getTime(); 
    } 
    private Calendar cal; 
} 
+0

你怎麼用這個?給一些背景 – Onheiron

回答

0

如果您將JSpinner編輯器類型設置爲DateEditor,則現有代碼將正常工作。代碼評論道。

public class spinnerdemo { 
    public void show() { 
     JFrame f = new JFrame("JSpinner Demo"); 
     f.setSize(500, 100); 
     f.setLayout(new GridLayout(1, 1)); 
     JSpinner ctrlSpin = new JSpinner(); 
     ctrlSpin.addChangeListener(new javax.swing.event.ChangeListener() { 
      @Override 
      public void stateChanged(javax.swing.event.ChangeEvent evt) { 
       System.out.println("" + ctrlSpin.getValue()); 
      } 
     }); 
     ctrlSpin.setModel(new SpinnerTimeModel()); 
     //set the DateEditor 
     ctrlSpin.setEditor(new JSpinner.DateEditor(ctrlSpin, "dd/MM/yyyy HH:mm:ss.SS")); 
     f.add(ctrlSpin); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setVisible(true); 
    } 
    public static void main(String[] args) { 
     new spinnerdemo().show(); 
    } 
} 
+0

好吧,讓我更具體。當我點擊jspinner的向上/向下箭頭時,編輯器的值不會改變。這裏是我設置/添加微調器,編輯器等的代碼: startTimeSpinner.setModel(new SpinnerTimeModel()); endTimeSpinner.setModel(new SpinnerTimeModel()); startTimeSpinner.setEditor(new JSpinner.DateEditor(startTimeSpinner,「HHmm」)); endTimeSpinner.setEditor(new JSpinner.DateEditor(endTimeSpinner,「HHmm」)); – user3236614

+0

好吧,我明白了。答案已更新。這可能會幫助你。 – Jeet