自定义JSpinner

时间:2009-06-14 15:57:29

标签: java swing jspinner

我创建了以下扩展JSpinner的类来迭代dd / mm / yyy值。


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 个答案:

答案 0 :(得分:2)

使用内置编辑器,例如以下

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

答案 1 :(得分:1)

另外,作为旁注 - 每当您使用日历,日期和时间时,我会考虑使用Joda Time