Руководство JavaFX DatePicker
View more Tutorials:

// Setting a particular date value in the class constructor checkInDatePicker = new DatePicker(LocalDate.of(1998, 10, 8)); // Setting a particular date value by using the setValue method checkInDatePicker.setValue(LocalDate.of(1998, 10, 8)); // Setting the minimum date available in the calendar checkInDatePicker.setValue(LocalDate.MIN); // Setting the maximum date available in the calendar checkInDatePicker.setValue(LocalDate.MAX); // Setting the current date checkInDatePicker.setValue(LocalDate.now());
setShowWeekNumber

DatePickerDemo.java
package org.o7planning.javafx.datapicker; import java.time.LocalDate; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.DatePicker; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; public class DatePickerDemo extends Application { @Override public void start(Stage stage) { DatePicker datePicker = new DatePicker(); datePicker.setValue(LocalDate.of(2016, 7, 25)); datePicker.setShowWeekNumbers(true); FlowPane root = new FlowPane(); root.getChildren().add(datePicker); root.setPadding(new Insets(10)); stage.setTitle("DatePicker (o7planning.org)"); Scene scene = new Scene(root, 300, 200); stage.setScene(scene); stage.show(); } public static void main(String[] args) { Application.launch(args); } }
Запуск примера:


По умолчанию, дни отображенные на поле Date (Date Field) в локальном формате (Local locale) и по стандарту ISO. Это означает, что дни будут отображаться в зависимости от конфигурации компьютера, на котором запущено приложение.

На коде Java вы можете кастомизировать отображение используя метод setConverter(..), и используя setConverter(null), если вы хотите вернуться в состояние по умолчанию.
Следующий пример кастомизирует отображение на "Date Field” в формате "dd-MM-yyyy"
DatePickerConverterDemo.java
package org.o7planning.javafx.datapicker; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.DatePicker; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; import javafx.util.StringConverter; public class DatePickerConverterDemo extends Application { @Override public void start(Stage stage) { DatePicker datePicker = new DatePicker(); datePicker.setValue(LocalDate.of(2016, 7, 25)); datePicker.setShowWeekNumbers(true); // Converter StringConverter<LocalDate> converter = new StringConverter<LocalDate>() { DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); @Override public String toString(LocalDate date) { if (date != null) { return dateFormatter.format(date); } else { return ""; } } @Override public LocalDate fromString(String string) { if (string != null && !string.isEmpty()) { return LocalDate.parse(string, dateFormatter); } else { return null; } } }; datePicker.setConverter(converter); datePicker.setPromptText("dd-MM-yyyy"); FlowPane root = new FlowPane(); root.getChildren().add(datePicker); root.setPadding(new Insets(10)); stage.setTitle("DatePicker (o7planning.org)"); Scene scene = new Scene(root, 300, 200); stage.setScene(scene); stage.show(); } public static void main(String[] args) { Application.launch(args); } }

По умолчанию, вы можете взаимодействовать со всеми днями на DatePicker. Однако, вы можете также кастомизировать DatePicker так, чтобы отключить несколько дней используя метод setDayCellFactory.
Следующий пример отключает понедельник, вторник, среду в месяце.

DatePickerConverterDemo.java
package org.o7planning.javafx.datapicker; import java.time.DayOfWeek; import java.time.LocalDate; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.DateCell; import javafx.scene.control.DatePicker; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; import javafx.util.Callback; public class DatePickerConverterDemo extends Application { // Factory to create Cell of DatePicker private Callback<DatePicker, DateCell> getDayCellFactory() { final Callback<DatePicker, DateCell> dayCellFactory = new Callback<DatePicker, DateCell>() { @Override public DateCell call(final DatePicker datePicker) { return new DateCell() { @Override public void updateItem(LocalDate item, boolean empty) { super.updateItem(item, empty); // Disable Monday, Tueday, Wednesday. if (item.getDayOfWeek() == DayOfWeek.MONDAY // || item.getDayOfWeek() == DayOfWeek.TUESDAY // || item.getDayOfWeek() == DayOfWeek.WEDNESDAY) { setDisable(true); setStyle("-fx-background-color: #ffc0cb;"); } } }; } }; return dayCellFactory; } @Override public void start(Stage stage) { DatePicker datePicker = new DatePicker(); datePicker.setValue(LocalDate.of(2016, 7, 25)); datePicker.setShowWeekNumbers(true); // Factory to create Cell of DatePicker Callback<DatePicker, DateCell> dayCellFactory= this.getDayCellFactory(); datePicker.setDayCellFactory(dayCellFactory); FlowPane root = new FlowPane(); root.getChildren().add(datePicker); root.setPadding(new Insets(10)); stage.setTitle("DatePicker (o7planning.org)"); Scene scene = new Scene(root, 300, 200); stage.setScene(scene); stage.show(); } public static void main(String[] args) { Application.launch(args); } }