public class DatePicker extends ComboBoxBase<java.time.LocalDate>
The value
property represents the
currently selected LocalDate
. An initial date can
be set via the constructor
or by calling setValue()
. The
default value is null.
final DatePicker datePicker = new DatePicker();
datePicker.setOnAction(new EventHandler() {
public void handle(Event t) {
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);
Modifier and Type | Class and Description |
---|---|
private static class |
DatePicker.StyleableProperties |
Modifier and Type | Field and Description |
---|---|
private ObjectProperty<java.time.chrono.Chronology> |
chronology |
private ObjectProperty<StringConverter<java.time.LocalDate>> |
converter |
private ObjectProperty<Callback<DatePicker,DateCell>> |
dayCellFactory
A custom cell factory can be provided to customize individual
day cells in the DatePicker popup.
|
private static java.lang.String |
DEFAULT_STYLE_CLASS
*
Stylesheet Handling *
*
|
private StringConverter<java.time.LocalDate> |
defaultConverter |
private ReadOnlyObjectWrapper<TextField> |
editor
The editor for the DatePicker.
|
private java.time.chrono.Chronology |
lastValidChronology |
private java.time.LocalDate |
lastValidDate |
private BooleanProperty |
showWeekNumbers |
ON_HIDDEN, ON_HIDING, ON_SHOWING, ON_SHOWN
USE_COMPUTED_SIZE, USE_PREF_SIZE
BASELINE_OFFSET_SAME_AS_HEIGHT
Constructor and Description |
---|
DatePicker()
Creates a default DatePicker instance with a
null date value set. |
DatePicker(java.time.LocalDate localDate)
Creates a DatePicker instance and sets the
value to the given date. |
Modifier and Type | Method and Description |
---|---|
ObjectProperty<java.time.chrono.Chronology> |
chronologyProperty()
The calendar system used for parsing, displaying, and choosing
dates in the DatePicker control.
|
ObjectProperty<StringConverter<java.time.LocalDate>> |
converterProperty()
Converts the input text to an object of type LocalDate and vice
versa.
|
protected Skin<?> |
createDefaultSkin()
Create a new instance of the default skin for this control.
|
ObjectProperty<Callback<DatePicker,DateCell>> |
dayCellFactoryProperty() |
ReadOnlyObjectProperty<TextField> |
editorProperty() |
java.time.chrono.Chronology |
getChronology() |
static java.util.List<CssMetaData<? extends Styleable,?>> |
getClassCssMetaData() |
java.util.List<CssMetaData<? extends Styleable,?>> |
getControlCssMetaData() |
StringConverter<java.time.LocalDate> |
getConverter() |
Callback<DatePicker,DateCell> |
getDayCellFactory() |
TextField |
getEditor() |
boolean |
isShowWeekNumbers() |
java.lang.Object |
queryAccessibleAttribute(AccessibleAttribute attribute,
java.lang.Object... parameters)
*
Accessibility handling *
*
|
void |
setChronology(java.time.chrono.Chronology value) |
void |
setConverter(StringConverter<java.time.LocalDate> value) |
void |
setDayCellFactory(Callback<DatePicker,DateCell> value) |
void |
setShowWeekNumbers(boolean value) |
BooleanProperty |
showWeekNumbersProperty()
Whether the DatePicker popup should display a column showing
week numbers.
|
private boolean |
validateDate(java.time.chrono.Chronology chrono,
java.time.LocalDate date) |
arm, armedProperty, disarm, editableProperty, executeAccessibleAction, 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
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, getBaselineOffset, getContextMenu, getControlChildren, getCssMetaData, getSkin, getTooltip, impl_cssGetFocusTraversableInitialValue, impl_processCSS, isResizable, layoutChildren, loadSkinClass, setContextMenu, setSkin, setTooltip, skinClassNameProperty, skinProperty, tooltipProperty
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, impl_computeContains, impl_computeGeomBounds, impl_computeLayoutBounds, impl_createPeer, impl_notifyLayoutBoundsChanged, impl_pickNodeLocal, impl_updatePeer, 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, snapSize, snapSpace, snapToPixelProperty, widthProperty
getChildren, getChildrenUnmodifiable, getImpl_traversalEngine, getManagedChildren, getStylesheets, impl_getAllParentStylesheets, impl_processMXNode, impl_traversalEngineProperty, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setImpl_traversalEngine, setNeedsLayout, updateBounds
accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, containsBounds, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, 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, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, hasProperties, hoverProperty, idProperty, impl_clearDirty, impl_computeIntersects, impl_cssGetCursorInitialValue, impl_findStyles, impl_geomChanged, impl_getLeafTransform, impl_getMatchingStyles, impl_getPeer, impl_getPivotX, impl_getPivotY, impl_getPivotZ, impl_getStyleMap, impl_hasTransforms, impl_intersects, impl_intersectsBounds, impl_isDirty, impl_isDirtyEmpty, impl_isShowMnemonics, impl_isTreeVisible, impl_layoutBoundsChanged, impl_markDirty, impl_pickNode, impl_processCSS, impl_reapplyCSS, impl_setShowMnemonics, impl_setStyleMap, impl_showMnemonicsProperty, impl_syncPeer, impl_transformsChanged, impl_traverse, impl_treeVisibleProperty, 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, 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, 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, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, visibleProperty
private java.time.LocalDate lastValidDate
private java.time.chrono.Chronology lastValidChronology
private ObjectProperty<Callback<DatePicker,DateCell>> dayCellFactory
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);
private ObjectProperty<java.time.chrono.Chronology> chronology
private BooleanProperty showWeekNumbers
private ObjectProperty<StringConverter<java.time.LocalDate>> converter
private StringConverter<java.time.LocalDate> defaultConverter
private ReadOnlyObjectWrapper<TextField> editor
ComboBox.editorProperty()
private static final java.lang.String DEFAULT_STYLE_CLASS
public DatePicker()
null
date value set.public DatePicker(java.time.LocalDate localDate)
value
to the given date.localDate
- to be set as the currently selected date in the DatePicker. Can be null.private boolean validateDate(java.time.chrono.Chronology chrono, java.time.LocalDate date)
public final void setDayCellFactory(Callback<DatePicker,DateCell> value)
public final Callback<DatePicker,DateCell> getDayCellFactory()
public final ObjectProperty<Callback<DatePicker,DateCell>> dayCellFactoryProperty()
public final ObjectProperty<java.time.chrono.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.
public final java.time.chrono.Chronology getChronology()
public final void setChronology(java.time.chrono.Chronology value)
public final BooleanProperty showWeekNumbersProperty()
The default value is specified in a resource bundle, and depends on the country of the current locale.
public final void setShowWeekNumbers(boolean value)
public final boolean isShowWeekNumbers()
public final ObjectProperty<StringConverter<java.time.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;
}
}
ComboBox.converterProperty()
public final void setConverter(StringConverter<java.time.LocalDate> value)
public final StringConverter<java.time.LocalDate> getConverter()
public final TextField getEditor()
public final ReadOnlyObjectProperty<TextField> editorProperty()
protected Skin<?> createDefaultSkin()
-fx-skin
or set explicitly in a sub-class with setSkin(...)
.createDefaultSkin
in class Control
public static java.util.List<CssMetaData<? extends Styleable,?>> getClassCssMetaData()
public java.util.List<CssMetaData<? extends Styleable,?>> getControlCssMetaData()
getControlCssMetaData
in class Control
public java.lang.Object queryAccessibleAttribute(AccessibleAttribute attribute, java.lang.Object... parameters)
queryAccessibleAttribute
in class ComboBoxBase<java.time.LocalDate>
attribute
- the requested attributeparameters
- optional list of parametersAccessibleAttribute