Руководство JavaFX DatePicker
1. JavaFX DatePicker
// 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
2. Пример DatePicker
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);
}
}
Запуск примера:
3. Кастомизация DatePicker
По умолчанию, дни отображенные на поле 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);
}
}
4. Отключить некоторые дни
По умолчанию, вы можете взаимодействовать со всеми днями на 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);
}
}
Руководства JavaFX
- Откройте новое окно (window) в JavaFX
- Руководство JavaFX ChoiceDialog
- Руководство JavaFX Alert Dialog
- Руководство JavaFX TextInputDialog
- Установите e(fx)clipse для Eclipse (JavaFX Tooling)
- Установите JavaFX Scene Builder для Eclipse
- Руководство JavaFX для начинающих - Hello JavaFX
- Руководство JavaFX FlowPane Layout
- Руководство JavaFX TilePane Layout
- Руководство JavaFX HBox, VBox Layout
- Руководство JavaFX BorderPane Layout
- Руководство JavaFX AnchorPane Layout
- Руководство JavaFX TitledPane
- Руководство JavaFX Accordion
- Руководство JavaFX ListView
- Руководство JavaFX Group
- Руководство JavaFX ComboBox
- Руководство JavaFX Transformations
- Эффекты (effects) в JavaFX
- Руководство JavaFX GridPane Layout
- Руководство JavaFX StackPane Layout
- Руководство JavaFX ScrollPane
- Руководство JavaFX WebView и WebEngine
- Руководство JavaFX HTMLEditor
- Руководство JavaFX TableView
- Руководство JavaFX TreeView
- Руководство JavaFX TreeTableView
- Руководство JavaFX Menu
- Руководство JavaFX ContextMenu
- Руководство JavaFX Image и ImageView
- Руководство JavaFX Label
- Руководство JavaFX Hyperlink
- Руководство JavaFX Button
- Руководство JavaFX ToggleButton
- Руководство JavaFX RadioButton
- Руководство JavaFX MenuButton и SplitMenuButton
- Руководство JavaFX TextField
- Руководство JavaFX PasswordField
- Руководство JavaFX TextArea
- Руководство JavaFX Slider
- Руководство JavaFX Spinner
- Руководство JavaFX ProgressBar и ProgressIndicator
- Руководство JavaFX ChoiceBox
- Руководство JavaFX Tooltip
- Руководство JavaFX DatePicker
- Руководство JavaFX ColorPicker
- Руководство JavaFX FileChooser и DirectoryChooser
- Руководство JavaFX PieChart
- Руководство JavaFX AreaChart и StackedAreaChart
- Руководство JavaFX BarChart и StackedBarChart
- Руководство JavaFX Line
- Руководство JavaFX Rectangle и Ellipse
Show More