2016-04-25 5 views
0

Есть ли способ настроить DatePicker для принятия пользовательского формата в дополнение к поддерживаемым в настоящее время форматам?Как использовать пользовательский формат даты для DatePicker

Например, вместо ввода пользователем «04/06/2016» в поле они могут ввести «04062016» или «04.06.2016»?

В настоящее время я вижу, что приемлемыми разделителями являются «/» и «-».

Спасибо!

ответ

1

Вы можете определить столько шаблонов, сколько хотите, и в вашем конвертере проверить, соответствует ли введенная дата любому из них.

private final List<String> patterns = Arrays.asList(
     "MM/dd/yyyy", "MMddyyyy", "MM.dd.yyyy"); 

@Override 
public void start(Stage stage) { 
    DatePicker datePicker = new DatePicker(); 
    datePicker.setConverter(new StringConverter<LocalDate>() { 
     @Override 
     public String toString(LocalDate date) { 
      if (date != null) { 
       for (String pattern : patterns) { 
        try { 
         return DateTimeFormatter.ofPattern(pattern).format(date); 
        } catch (DateTimeException dte) { } 
       } 
       System.out.println("Format Error"); 
      } 
      return ""; 
     } 
     @Override 
     public LocalDate fromString(String string) { 
      if (string != null && !string.isEmpty()) { 
       for (String pattern : patterns) { 
        try { 
         return LocalDate.parse(string, DateTimeFormatter.ofPattern(pattern)); 
        } catch (DateTimeParseException dtpe) { } 
       } 
       System.out.println("Parse Error"); 
      } 
      return null; 
     } 
    }); 
} 
+0

Благодарим за быстрый ответ. Был в состоянии использовать это как базу и получить мои форматы. –

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