Le Tutoriel de 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); } }
Exécutez l'exemple :


Par défaut, les date affichées sur le champ Date (Date Field) est formaté en fonction de paramètre local et en fonction de norme ISO. Cela signifie que l'affichage de la date suivra la configuration sur l'ordinateur qui exécute votre application.

Sur le code Java, vous pouvez personnaliser le format de 'Date Field' via la méthode setConverter (..) et vous pouvez utiliser la méthode setConverter (null) si vous voulez revenir à l'état par défaut.
L'exemple suivant personnalise l'affichage sur "Date Field" sous le format "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); } }

Par défaut, vous pouvez interagir avec tous les jours sur DatePicker. Cependant, vous pouvez personnaliser le DatePicker pour désactiver certains jours, en utilisant les méthodes setDayCellFactory.
L'exemple suivant va désactiver tous les lundi, mardi et mercredi du mois.

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); } }