2009-06-14 152 views
0

我創建了以下類,它擴展了JSpinner以迭代dd/mm/yyy值。自定義JSpinner


public class DateSpinner extends JSpinner{ 

    Calendar calendar = new GregorianCalendar(); 

    public DateSpinner(){ 
    super(); 

    calendar.add(Calendar.DAY_OF_YEAR, 1); 
    Date now = calendar.getTime(); 

    calendar.add(Calendar.DAY_OF_YEAR, -2); 
    Date startDate = calendar.getTime(); 

    calendar.add(Calendar.YEAR, 100); 
    Date endDate = calendar.getTime(); 

    SpinnerDateModel dateModel = new SpinnerDateModel 
     (now , startDate , endDate , Calendar.DAY_OF_MONTH); 

    setModel(dateModel); 

    JFormattedTextField tf = 
     ((JSpinner.DefaultEditor)getEditor()).getTextField(); 
    DefaultFormatterFactory factory = 
     (DefaultFormatterFactory)tf.getFormatterFactory(); 
    DateFormatter formatter = (DateFormatter)factory.getDefaultFormatter(); 

    // Change the date format to only show the hours 
    formatter.setFormat(new SimpleDateFormat("dd/MM/yyyy")); 
    } 




} 

我的問題是,當我使用

Date today = new Date(); 
    spinner.setValue(today); 

我得到包括一週的時間,一天的日期設置其值。如果我觸摸微調器,它會根據我設置的格式進行格式化。我怎樣才能最初得到我想要顯示的格式?

回答

2

使用內置的編輯器,如以下

spinner.setEditor(new JSpinner.DateEditor(spinner, "dd/MM/yyyy")); 
1

此外,作爲一個側面說明 - 當你的日曆,日期和時間的工作,我會考慮使用Joda Time

+0

而且,如果您正在使用Java8 API,則可以使用`LocalDate`和`LocalDateTime`類。 – 2016-07-31 15:28:01