Class DatePicker
- All Implemented Interfaces:
-
Styleable,EventTarget,Skinnable
public class DatePicker
extends ComboBoxBase<LocalDate> The value property represents the currently selected LocalDate. An initial date can be set via the constructor or by calling setValue(LocalDate). The default value is null.
DatePicker datePicker = new DatePicker();
datePicker.setOnAction(e -> {
LocalDate date = datePicker.getValue();
System.err.println("Selected date: " + date);
}); The chronology property specifies a calendar system to be used for parsing, displaying, and choosing dates. The value property is always defined in the ISO calendar system, however, so applications based on a different chronology may use the conversion methods provided in the Chronology API to get or set the corresponding ChronoLocalDate value. For example:
LocalDate isoDate = datePicker.getValue();
ChronoLocalDate chronoDate =
((isoDate != null) ? datePicker.getChronology().date(isoDate) : null);
System.err.println("Selected date: " + chronoDate);
- Since:
- JavaFX 8.0
Property Summary
| Type | Property | Description |
|---|---|---|
ObjectProperty<Chronology> | chronology | The calendar system used for parsing, displaying, and choosing dates in the DatePicker control. |
ObjectProperty<StringConverter<LocalDate>> | converter | Converts the input text to an object of type LocalDate and vice versa. |
ObjectProperty<Callback<DatePicker,DateCell>> | dayCellFactory | A custom cell factory can be provided to customize individual day cells in the DatePicker popup. |
ReadOnlyObjectProperty<TextField> | editor | The editor for the DatePicker. |
BooleanProperty | showWeekNumbers | Whether the DatePicker popup should display a column showing week numbers. |
Properties declared in class javafx.scene.control.ComboBoxBase
armed, editable, onAction, onHidden, onHiding, onShowing, onShown, promptText, showing, value
Properties declared in class javafx.scene.control.Control
contextMenu, skin, tooltip
Properties declared in class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
Properties declared in class javafx.scene.Parent
needsLayout
Properties declared in class javafx.scene.Node
accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
Field Summary
Fields declared in class javafx.scene.control.ComboBoxBase
ON_HIDDEN, ON_HIDING, ON_SHOWING, ON_SHOWN
Fields declared in class javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
Fields declared in class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
Constructor Summary
| Constructor | Description |
|---|---|
DatePicker() | Creates a default DatePicker instance with a null date value set. |
DatePicker(LocalDate localDate) | Creates a DatePicker instance and sets the value to the given date. |
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
ObjectProperty<Chronology> | chronologyProperty() | The calendar system used for parsing, displaying, and choosing dates in the DatePicker control. |
ObjectProperty<StringConverter<LocalDate>> | converterProperty() | Converts the input text to an object of type LocalDate and vice versa. |
ObjectProperty<Callback<DatePicker,DateCell>> | dayCellFactoryProperty() | A custom cell factory can be provided to customize individual day cells in the DatePicker popup. |
ReadOnlyObjectProperty<TextField> | editorProperty() | The editor for the DatePicker. |
Chronology | getChronology() | Gets the value of the property chronology. |
static List<CssMetaData<? extends Styleable,?>> | getClassCssMetaData() | |
List<CssMetaData<? extends Styleable,?>> | getControlCssMetaData() | |
StringConverter<LocalDate> | getConverter() | Gets the value of the property converter. |
Callback<DatePicker,DateCell> | getDayCellFactory() | Gets the value of the property dayCellFactory. |
TextField | getEditor() | Gets the value of the property editor. |
boolean | isShowWeekNumbers() | Gets the value of the property showWeekNumbers. |
void | setChronology(Chronology value) | Sets the value of the property chronology. |
void | setConverter(StringConverter<LocalDate> value) | Sets the value of the property converter. |
void | setDayCellFactory(Callback<DatePicker,DateCell> value) | Sets the value of the property dayCellFactory. |
void | setShowWeekNumbers(boolean value) | Sets the value of the property showWeekNumbers. |
BooleanProperty | showWeekNumbersProperty() | Whether the DatePicker popup should display a column showing week numbers. |
Methods declared in class javafx.scene.control.ComboBoxBase
arm, armedProperty, disarm, editableProperty, getOnAction, getOnHidden, getOnHiding, getOnShowing, getOnShown, getPromptText, getValue, hide, isArmed, isEditable, isShowing, onActionProperty, onHiddenProperty, onHidingProperty, onShowingProperty, onShownProperty, promptTextProperty, setEditable, setOnAction, setOnHidden, setOnHiding, setOnShowing, setOnShown, setPromptText, setValue, show, showingProperty, valueProperty
Methods declared in class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, contextMenuProperty, createDefaultSkin, getContextMenu, getCssMetaData, getInitialFocusTraversable, getTooltip, isResizable, setContextMenu, setTooltip, skinProperty, tooltipProperty
Methods declared in class javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computePrefHeight, computePrefWidth, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty
Methods declared in class javafx.scene.Parent
getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, layoutChildren, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
Methods declared in class javafx.scene.Node
accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookup, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, queryAccessibleAttribute, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods declared in interface javafx.css.Styleable
getStyleableNode, getStyleClass
Property Details
dayCellFactory
public final ObjectProperty<Callback<DatePicker,DateCell>> dayCellFactoryProperty
DateCell and Cell for more information on cell factories. Example:
final Callback<DatePicker, DateCell> dayCellFactory = new Callback<DatePicker, DateCell>() {
public DateCell call(final DatePicker datePicker) {
return new DateCell() {
@Override public void updateItem(LocalDate item, boolean empty) {
super.updateItem(item, empty);
if (MonthDay.from(item).equals(MonthDay.of(9, 25))) {
setTooltip(new Tooltip("Happy Birthday!"));
setStyle("-fx-background-color: #ff4444;");
}
if (item.equals(LocalDate.now().plusDays(1))) {
// Tomorrow is too soon.
setDisable(true);
}
}
};
}
};
datePicker.setDayCellFactory(dayCellFactory);
- Default value:
- null
- See Also:
-
getDayCellFactory(),setDayCellFactory(Callback)
chronology
public final ObjectProperty<Chronology> chronologyProperty
The default value is returned from a call to Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT)). The default is usually IsoChronology unless provided explicitly in the Locale by use of a Locale calendar extension. Setting the value to null will restore the default chronology.
- See Also:
-
getChronology(),setChronology(Chronology)
showWeekNumbers
public final BooleanProperty showWeekNumbersProperty
The default value is specified in a resource bundle, and depends on the country of the current locale.
- See Also:
-
isShowWeekNumbers(),setShowWeekNumbers(boolean)
converter
public final ObjectProperty<StringConverter<LocalDate>> converterProperty
If not set by the application, the DatePicker skin class will set a converter based on a DateTimeFormatter for the current Locale and chronology. This formatter is then used to parse and display the current date value. Setting the value to null will restore the default converter.
Example using an explicit formatter:
datePicker.setConverter(new StringConverter<LocalDate>() {
String pattern = "yyyy-MM-dd";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern);
{
datePicker.setPromptText(pattern.toLowerCase());
}
@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;
}
}
});
Example that wraps the default formatter and catches parse exceptions:
final StringConverter<LocalDate> defaultConverter = datePicker.getConverter();
datePicker.setConverter(new StringConverter<LocalDate>() {
@Override public String toString(LocalDate value) {
return defaultConverter.toString(value);
}
@Override public LocalDate fromString(String text) {
try {
return defaultConverter.fromString(text);
} catch (DateTimeParseException ex) {
System.err.println("HelloDatePicker: "+ex.getMessage());
throw ex;
}
}
});
The default base year for parsing input containing only two digits for the year is 2000 (see DateTimeFormatter). This default is not useful for allowing a person's date of birth to be typed. The following example modifies the converter's fromString() method to allow a two digit year for birth dates up to 99 years in the past.
@Override public LocalDate fromString(String text) {
if (text != null && !text.isEmpty()) {
Locale locale = Locale.getDefault(Locale.Category.FORMAT);
Chronology chrono = datePicker.getChronology();
String pattern =
DateTimeFormatterBuilder.getLocalizedDateTimePattern(FormatStyle.SHORT,
null, chrono, locale);
String prePattern = pattern.substring(0, pattern.indexOf("y"));
String postPattern = pattern.substring(pattern.lastIndexOf("y")+1);
int baseYear = LocalDate.now().getYear() - 99;
DateTimeFormatter df = new DateTimeFormatterBuilder()
.parseLenient()
.appendPattern(prePattern)
.appendValueReduced(ChronoField.YEAR, 2, 2, baseYear)
.appendPattern(postPattern)
.toFormatter();
return LocalDate.from(chrono.date(df.parse(text)));
} else {
return null;
}
}
- See Also:
-
getConverter(),setConverter(StringConverter)
editor
public final ReadOnlyObjectProperty<TextField> editorProperty
- See Also:
getEditor()
Constructor Details
DatePicker
public DatePicker()
null date value set.DatePicker
public DatePicker(LocalDate localDate)
value to the given date.- Parameters:
-
localDate- to be set as the currently selected date in the DatePicker. Can be null.
Method Details
setDayCellFactory
public final void setDayCellFactory(Callback<DatePicker,DateCell> value)
- Property description:
- A custom cell factory can be provided to customize individual day cells in the DatePicker popup. Refer to
DateCellandCellfor more information on cell factories. Example:final Callback<DatePicker, DateCell> dayCellFactory = new Callback<DatePicker, DateCell>() { public DateCell call(final DatePicker datePicker) { return new DateCell() { @Override public void updateItem(LocalDate item, boolean empty) { super.updateItem(item, empty); if (MonthDay.from(item).equals(MonthDay.of(9, 25))) { setTooltip(new Tooltip("Happy Birthday!")); setStyle("-fx-background-color: #ff4444;"); } if (item.equals(LocalDate.now().plusDays(1))) { // Tomorrow is too soon. setDisable(true); } } }; } }; datePicker.setDayCellFactory(dayCellFactory); - Default value:
- null
getDayCellFactory
public final Callback<DatePicker,DateCell> getDayCellFactory()
- Property description:
- A custom cell factory can be provided to customize individual day cells in the DatePicker popup. Refer to
DateCellandCellfor more information on cell factories. Example:final Callback<DatePicker, DateCell> dayCellFactory = new Callback<DatePicker, DateCell>() { public DateCell call(final DatePicker datePicker) { return new DateCell() { @Override public void updateItem(LocalDate item, boolean empty) { super.updateItem(item, empty); if (MonthDay.from(item).equals(MonthDay.of(9, 25))) { setTooltip(new Tooltip("Happy Birthday!")); setStyle("-fx-background-color: #ff4444;"); } if (item.equals(LocalDate.now().plusDays(1))) { // Tomorrow is too soon. setDisable(true); } } }; } }; datePicker.setDayCellFactory(dayCellFactory); - Default value:
- null
dayCellFactoryProperty
public final ObjectProperty<Callback<DatePicker,DateCell>> dayCellFactoryProperty()
DateCell and Cell for more information on cell factories. Example:
final Callback<DatePicker, DateCell> dayCellFactory = new Callback<DatePicker, DateCell>() {
public DateCell call(final DatePicker datePicker) {
return new DateCell() {
@Override public void updateItem(LocalDate item, boolean empty) {
super.updateItem(item, empty);
if (MonthDay.from(item).equals(MonthDay.of(9, 25))) {
setTooltip(new Tooltip("Happy Birthday!"));
setStyle("-fx-background-color: #ff4444;");
}
if (item.equals(LocalDate.now().plusDays(1))) {
// Tomorrow is too soon.
setDisable(true);
}
}
};
}
};
datePicker.setDayCellFactory(dayCellFactory);
- Default value:
- null
- See Also:
-
getDayCellFactory(),setDayCellFactory(Callback)
chronologyProperty
public final ObjectProperty<Chronology> chronologyProperty()
The default value is returned from a call to Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT)). The default is usually IsoChronology unless provided explicitly in the Locale by use of a Locale calendar extension. Setting the value to null will restore the default chronology.
- See Also:
-
getChronology(),setChronology(Chronology)
getChronology
public final Chronology getChronology()
- Property description:
- The calendar system used for parsing, displaying, and choosing dates in the DatePicker control.
The default value is returned from a call to
Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT)). The default is usuallyIsoChronologyunless provided explicitly in theLocaleby use of a Locale calendar extension. Setting the value tonullwill restore the default chronology.
setChronology
public final void setChronology(Chronology value)
- Property description:
- The calendar system used for parsing, displaying, and choosing dates in the DatePicker control.
The default value is returned from a call to
Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT)). The default is usuallyIsoChronologyunless provided explicitly in theLocaleby use of a Locale calendar extension. Setting the value tonullwill restore the default chronology.
showWeekNumbersProperty
public final BooleanProperty showWeekNumbersProperty()
The default value is specified in a resource bundle, and depends on the country of the current locale.
- See Also:
-
isShowWeekNumbers(),setShowWeekNumbers(boolean)
setShowWeekNumbers
public final void setShowWeekNumbers(boolean value)
- Property description:
- Whether the DatePicker popup should display a column showing week numbers.
The default value is specified in a resource bundle, and depends on the country of the current locale.
isShowWeekNumbers
public final boolean isShowWeekNumbers()
- Property description:
- Whether the DatePicker popup should display a column showing week numbers.
The default value is specified in a resource bundle, and depends on the country of the current locale.
converterProperty
public final ObjectProperty<StringConverter<LocalDate>> converterProperty()
If not set by the application, the DatePicker skin class will set a converter based on a DateTimeFormatter for the current Locale and chronology. This formatter is then used to parse and display the current date value. Setting the value to null will restore the default converter.
Example using an explicit formatter:
datePicker.setConverter(new StringConverter<LocalDate>() {
String pattern = "yyyy-MM-dd";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern);
{
datePicker.setPromptText(pattern.toLowerCase());
}
@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;
}
}
});
Example that wraps the default formatter and catches parse exceptions:
final StringConverter<LocalDate> defaultConverter = datePicker.getConverter();
datePicker.setConverter(new StringConverter<LocalDate>() {
@Override public String toString(LocalDate value) {
return defaultConverter.toString(value);
}
@Override public LocalDate fromString(String text) {
try {
return defaultConverter.fromString(text);
} catch (DateTimeParseException ex) {
System.err.println("HelloDatePicker: "+ex.getMessage());
throw ex;
}
}
});
The default base year for parsing input containing only two digits for the year is 2000 (see DateTimeFormatter). This default is not useful for allowing a person's date of birth to be typed. The following example modifies the converter's fromString() method to allow a two digit year for birth dates up to 99 years in the past.
@Override public LocalDate fromString(String text) {
if (text != null && !text.isEmpty()) {
Locale locale = Locale.getDefault(Locale.Category.FORMAT);
Chronology chrono = datePicker.getChronology();
String pattern =
DateTimeFormatterBuilder.getLocalizedDateTimePattern(FormatStyle.SHORT,
null, chrono, locale);
String prePattern = pattern.substring(0, pattern.indexOf("y"));
String postPattern = pattern.substring(pattern.lastIndexOf("y")+1);
int baseYear = LocalDate.now().getYear() - 99;
DateTimeFormatter df = new DateTimeFormatterBuilder()
.parseLenient()
.appendPattern(prePattern)
.appendValueReduced(ChronoField.YEAR, 2, 2, baseYear)
.appendPattern(postPattern)
.toFormatter();
return LocalDate.from(chrono.date(df.parse(text)));
} else {
return null;
}
}
- See Also:
-
getConverter(),setConverter(StringConverter)
setConverter
public final void setConverter(StringConverter<LocalDate> value)
- Property description:
- Converts the input text to an object of type LocalDate and vice versa.
If not set by the application, the DatePicker skin class will set a converter based on a
DateTimeFormatterfor the currentLocaleandchronology. This formatter is then used to parse and display the current date value. Setting the value tonullwill restore the default converter.Example using an explicit formatter:
datePicker.setConverter(new StringConverter<LocalDate>() { String pattern = "yyyy-MM-dd"; DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern); { datePicker.setPromptText(pattern.toLowerCase()); } @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; } } });Example that wraps the default formatter and catches parse exceptions:
final StringConverter<LocalDate> defaultConverter = datePicker.getConverter(); datePicker.setConverter(new StringConverter<LocalDate>() { @Override public String toString(LocalDate value) { return defaultConverter.toString(value); } @Override public LocalDate fromString(String text) { try { return defaultConverter.fromString(text); } catch (DateTimeParseException ex) { System.err.println("HelloDatePicker: "+ex.getMessage()); throw ex; } } });The default base year for parsing input containing only two digits for the year is 2000 (see
DateTimeFormatter). This default is not useful for allowing a person's date of birth to be typed. The following example modifies the converter's fromString() method to allow a two digit year for birth dates up to 99 years in the past.@Override public LocalDate fromString(String text) { if (text != null && !text.isEmpty()) { Locale locale = Locale.getDefault(Locale.Category.FORMAT); Chronology chrono = datePicker.getChronology(); String pattern = DateTimeFormatterBuilder.getLocalizedDateTimePattern(FormatStyle.SHORT, null, chrono, locale); String prePattern = pattern.substring(0, pattern.indexOf("y")); String postPattern = pattern.substring(pattern.lastIndexOf("y")+1); int baseYear = LocalDate.now().getYear() - 99; DateTimeFormatter df = new DateTimeFormatterBuilder() .parseLenient() .appendPattern(prePattern) .appendValueReduced(ChronoField.YEAR, 2, 2, baseYear) .appendPattern(postPattern) .toFormatter(); return LocalDate.from(chrono.date(df.parse(text))); } else { return null; } }
getConverter
public final StringConverter<LocalDate> getConverter()
- Property description:
- Converts the input text to an object of type LocalDate and vice versa.
If not set by the application, the DatePicker skin class will set a converter based on a
DateTimeFormatterfor the currentLocaleandchronology. This formatter is then used to parse and display the current date value. Setting the value tonullwill restore the default converter.Example using an explicit formatter:
datePicker.setConverter(new StringConverter<LocalDate>() { String pattern = "yyyy-MM-dd"; DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern); { datePicker.setPromptText(pattern.toLowerCase()); } @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; } } });Example that wraps the default formatter and catches parse exceptions:
final StringConverter<LocalDate> defaultConverter = datePicker.getConverter(); datePicker.setConverter(new StringConverter<LocalDate>() { @Override public String toString(LocalDate value) { return defaultConverter.toString(value); } @Override public LocalDate fromString(String text) { try { return defaultConverter.fromString(text); } catch (DateTimeParseException ex) { System.err.println("HelloDatePicker: "+ex.getMessage()); throw ex; } } });The default base year for parsing input containing only two digits for the year is 2000 (see
DateTimeFormatter). This default is not useful for allowing a person's date of birth to be typed. The following example modifies the converter's fromString() method to allow a two digit year for birth dates up to 99 years in the past.@Override public LocalDate fromString(String text) { if (text != null && !text.isEmpty()) { Locale locale = Locale.getDefault(Locale.Category.FORMAT); Chronology chrono = datePicker.getChronology(); String pattern = DateTimeFormatterBuilder.getLocalizedDateTimePattern(FormatStyle.SHORT, null, chrono, locale); String prePattern = pattern.substring(0, pattern.indexOf("y")); String postPattern = pattern.substring(pattern.lastIndexOf("y")+1); int baseYear = LocalDate.now().getYear() - 99; DateTimeFormatter df = new DateTimeFormatterBuilder() .parseLenient() .appendPattern(prePattern) .appendValueReduced(ChronoField.YEAR, 2, 2, baseYear) .appendPattern(postPattern) .toFormatter(); return LocalDate.from(chrono.date(df.parse(text))); } else { return null; } }
getEditor
public final TextField getEditor()
- Property description:
- The editor for the DatePicker.
editorProperty
public final ReadOnlyObjectProperty<TextField> editorProperty()
- See Also:
getEditor()
getClassCssMetaData
public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData()
- Returns:
- The CssMetaData associated with this class, which may include the CssMetaData of its superclasses.
getControlCssMetaData
public List<CssMetaData<? extends Styleable,?>> getControlCssMetaData()
- Overrides:
-
getControlCssMetaDatain classControl - Returns:
- unmodifiable list of the controls css styleable properties
- Since:
- JavaFX 8.0
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.