2009-06-14 153 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