Пользовательский JSpinner - PullRequest
0 голосов
/ 14 июня 2009

Я создал следующий класс, который расширяет 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 ]

2 голосов
/ 14 июня 2009

Используйте встроенные редакторы, такие как следующие

spinner.setEditor(new JSpinner.DateEditor(spinner, "dd/MM/yyyy"));
1 голос
/ 14 июня 2009

Кроме того, как примечание - всякий раз, когда вы работаете с календарями, датами и временем, я бы подумал об использовании Joda Time .

...