2015-06-29 14 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