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

И классы 'LocalDate' и' LocalDateTime' доступны, если вы работаете с API Java8. –

Смежные вопросы