Пользовательский JSpinner
Вопрос
Я создал следующий класс, который расширяет 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);
Я получаю дату, включая время и день недели.Если я касаюсь счетчика, он форматирует его в соответствии с установленным мной форматом.Как я могу изначально получить формат, который я хочу показать?
Решение
Используйте встроенные редакторы, такие как следующие
spinner.setEditor(new JSpinner.DateEditor(spinner, "dd/MM/yyyy"));
Другие советы
Кроме того, в качестве дополнительного примечания - всякий раз, когда вы работаете с календарями, датами и временем, я бы рассмотрел возможность использования Время Джоды.
Не связан с StackOverflow