public class DatePicker extends ComboBoxBase<LocalDate>
value
プロパティは、現在選択されているLocalDate
を表します。初期日付は、constructor
を使用するか、またはsetValue()
を呼び出して設定できます。デフォルト値は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);
}
});
chronology
プロパティには、日付の解析、表示および選択に使用される暦体系を指定します。value
プロパティは常にISO暦体系に定義されますが、別の暦に基づくアプリケーションがChronology
APIに用意されている変換方法を使用して、対応するChronoLocalDate
値を取得または設定する場合があります。例:
LocalDate isoDate = datePicker.getValue();
ChronoLocalDate chronoDate =
((isoDate != null) ? datePicker.getChronology().date(isoDate) : null);
System.err.println("Selected date: " + chronoDate);
Type | プロパティと説明 |
---|---|
ObjectProperty<Chronology> |
chronology
DatePickerコントロールの日付を解析、表示および選択するために使用されるカレンダ・システム。
|
ObjectProperty<StringConverter<LocalDate>> |
converter
入力テキストをLocalDate型のオブジェクトに、およびその逆に変換します。
|
ObjectProperty<Callback<DatePicker,DateCell>> |
dayCellFactory
カスタム・セル・ファクトリを提供して、DatePickerポップアップの個々の日のセルをカスタマイズできます。
|
ReadOnlyObjectProperty<TextField> |
editor
DatePickerのエディタ。
|
BooleanProperty |
showWeekNumbers
DatePickerポップアップが週番号を示す列を表示するかどうか。
|
armed、editable、onAction、onHidden、onHiding、onShowing、onShown、promptText、showing、value
contextMenu、skin、tooltip
background、border、cacheShape、centerShape、height、insets、maxHeight、maxWidth、minHeight、minWidth、opaqueInsets、padding、prefHeight、prefWidth、scaleShape、shape、snapToPixel、width
needsLayout
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、visible
ON_HIDDEN、ON_HIDING、ON_SHOWING、ON_SHOWN
USE_COMPUTED_SIZE、USE_PREF_SIZE
BASELINE_OFFSET_SAME_AS_HEIGHT
コンストラクタと説明 |
---|
DatePicker()
日付の値を
null に設定したデフォルトのDatePickerインスタンスを作成します。 |
DatePicker(LocalDate localDate)
DatePickerインスタンスを作成し、
value を指定された日付に設定します。 |
修飾子と型 | メソッドと説明 |
---|---|
ObjectProperty<Chronology> |
chronologyProperty()
DatePickerコントロールの日付を解析、表示および選択するために使用されるカレンダ・システム。
|
ObjectProperty<StringConverter<LocalDate>> |
converterProperty()
入力テキストをLocalDate型のオブジェクトに、およびその逆に変換します。
|
protected Skin<?> |
createDefaultSkin()
このコントロールのデフォルト・スキンの新しいインスタンスを作成します。
|
ObjectProperty<Callback<DatePicker,DateCell>> |
dayCellFactoryProperty()
カスタム・セル・ファクトリを提供して、DatePickerポップアップの個々の日のセルをカスタマイズできます。
|
ReadOnlyObjectProperty<TextField> |
editorProperty()
DatePickerのエディタ。
|
Chronology |
getChronology()
プロパティchronologyの値を取得します。
|
static List<CssMetaData<? extends Styleable,?>> |
getClassCssMetaData() |
List<CssMetaData<? extends Styleable,?>> |
getControlCssMetaData() |
StringConverter<LocalDate> |
getConverter()
プロパティconverterの値を取得します。
|
Callback<DatePicker,DateCell> |
getDayCellFactory()
プロパティdayCellFactoryの値を取得します。
|
TextField |
getEditor()
プロパティ・エディタの値を取得します。
|
boolean |
isShowWeekNumbers()
プロパティshowWeekNumbersの値を取得します。
|
Object |
queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters)
*アクセシビリティ処理* *
|
void |
setChronology(Chronology value)
プロパティchronologyの値を設定します。
|
void |
setConverter(StringConverter<LocalDate> value)
プロパティconverterの値を設定します。
|
void |
setDayCellFactory(Callback<DatePicker,DateCell> value)
プロパティdayCellFactoryの値を設定します。
|
void |
setShowWeekNumbers(boolean value)
プロパティshowWeekNumbersの値を設定します。
|
BooleanProperty |
showWeekNumbersProperty()
DatePickerポップアップが週番号を示す列を表示するかどうか。
|
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、getCssMetaData、getSkin、getTooltip、isResizable、layoutChildren、setContextMenu、setSkin、setTooltip、skinProperty、tooltipProperty
backgroundProperty、borderProperty、cacheShapeProperty、centerShapeProperty、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、snapSize、snapSpace、snapToPixelProperty、widthProperty
getChildren、getChildrenUnmodifiable、getManagedChildren、getStylesheets、isNeedsLayout、layout、lookup、needsLayoutProperty、requestLayout、requestParentLayout、setNeedsLayout、updateBounds
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、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、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
public final ObjectProperty<Callback<DatePicker,DateCell>> dayCellFactoryProperty
DateCell
およびCell
を参照してください。例:
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);
getDayCellFactory()
、setDayCellFactory(Callback)
public final ObjectProperty<Chronology> chronologyProperty
デフォルト値は、Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT))
への呼出しから返されます。デフォルトは、Localeカレンダ拡張を使用してLocale
に明示的に指定されている場合を除き、通常、IsoChronology
です。値をnull
に設定すると、デフォルトの暦が復元されます。
public final BooleanProperty showWeekNumbersProperty
デフォルト値は、リソース・バンドルに指定され、現在のロケールの国によって異なります。
public final ObjectProperty<StringConverter<LocalDate>> converterProperty
アプリケーションによって設定されない場合は、現在のLocale
およびchronology
に対するDateTimeFormatter
に基づいてDatePickerスキン・クラスがコンバータを設定します。このフォーマッタは、その後、現在の日付の値の解析と表示に使用されます。値をnull
に設定すると、デフォルトのコンバータが復元されます。
明示的なフォーマッタを使用した例:
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;
}
}
});
デフォルトのフォーマッタをラップし、解析例外を捕捉する例:
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;
}
}
});
年の2桁のみが含まれている入力を解析するためのデフォルトの基準年は2000です(DateTimeFormatter
を参照)。このデフォルトは、個人の生年月日の入力を許可する場合には適していません。次の例では、コンバータのfromString()メソッドを変更して、生年月日の2桁の年を最大で過去99年まで許可しています。
@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;
}
}
public final ReadOnlyObjectProperty<TextField> editorProperty
getEditor()
public final void setDayCellFactory(Callback<DatePicker,DateCell> value)
DateCell
およびCell
を参照してください。例:
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);
public final Callback<DatePicker,DateCell> getDayCellFactory()
DateCell
およびCell
を参照してください。例:
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);
public final ObjectProperty<Callback<DatePicker,DateCell>> dayCellFactoryProperty()
DateCell
およびCell
を参照してください。例:
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);
getDayCellFactory()
、setDayCellFactory(Callback)
public final ObjectProperty<Chronology> chronologyProperty()
デフォルト値は、Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT))
への呼出しから返されます。デフォルトは、Localeカレンダ拡張を使用してLocale
に明示的に指定されている場合を除き、通常、IsoChronology
です。値をnull
に設定すると、デフォルトの暦が復元されます。
public final Chronology getChronology()
デフォルト値は、Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT))
への呼出しから返されます。デフォルトは、Localeカレンダ拡張を使用してLocale
に明示的に指定されている場合を除き、通常、IsoChronology
です。値をnull
に設定すると、デフォルトの暦が復元されます。
public final void setChronology(Chronology value)
デフォルト値は、Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT))
への呼出しから返されます。デフォルトは、Localeカレンダ拡張を使用してLocale
に明示的に指定されている場合を除き、通常、IsoChronology
です。値をnull
に設定すると、デフォルトの暦が復元されます。
public final BooleanProperty showWeekNumbersProperty()
デフォルト値は、リソース・バンドルに指定され、現在のロケールの国によって異なります。
public final void setShowWeekNumbers(boolean value)
デフォルト値は、リソース・バンドルに指定され、現在のロケールの国によって異なります。
public final boolean isShowWeekNumbers()
デフォルト値は、リソース・バンドルに指定され、現在のロケールの国によって異なります。
public final ObjectProperty<StringConverter<LocalDate>> converterProperty()
アプリケーションによって設定されない場合は、現在のLocale
およびchronology
に対するDateTimeFormatter
に基づいてDatePickerスキン・クラスがコンバータを設定します。このフォーマッタは、その後、現在の日付の値の解析と表示に使用されます。値をnull
に設定すると、デフォルトのコンバータが復元されます。
明示的なフォーマッタを使用した例:
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;
}
}
});
デフォルトのフォーマッタをラップし、解析例外を捕捉する例:
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;
}
}
});
年の2桁のみが含まれている入力を解析するためのデフォルトの基準年は2000です(DateTimeFormatter
を参照)。このデフォルトは、個人の生年月日の入力を許可する場合には適していません。次の例では、コンバータのfromString()メソッドを変更して、生年月日の2桁の年を最大で過去99年まで許可しています。
@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;
}
}
public final void setConverter(StringConverter<LocalDate> value)
アプリケーションによって設定されない場合は、現在のLocale
およびchronology
に対するDateTimeFormatter
に基づいてDatePickerスキン・クラスがコンバータを設定します。このフォーマッタは、その後、現在の日付の値の解析と表示に使用されます。値をnull
に設定すると、デフォルトのコンバータが復元されます。
明示的なフォーマッタを使用した例:
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;
}
}
});
デフォルトのフォーマッタをラップし、解析例外を捕捉する例:
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;
}
}
});
年の2桁のみが含まれている入力を解析するためのデフォルトの基準年は2000です(DateTimeFormatter
を参照)。このデフォルトは、個人の生年月日の入力を許可する場合には適していません。次の例では、コンバータのfromString()メソッドを変更して、生年月日の2桁の年を最大で過去99年まで許可しています。
@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;
}
}
public final StringConverter<LocalDate> getConverter()
アプリケーションによって設定されない場合は、現在のLocale
およびchronology
に対するDateTimeFormatter
に基づいてDatePickerスキン・クラスがコンバータを設定します。このフォーマッタは、その後、現在の日付の値の解析と表示に使用されます。値をnull
に設定すると、デフォルトのコンバータが復元されます。
明示的なフォーマッタを使用した例:
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;
}
}
});
デフォルトのフォーマッタをラップし、解析例外を捕捉する例:
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;
}
}
});
年の2桁のみが含まれている入力を解析するためのデフォルトの基準年は2000です(DateTimeFormatter
を参照)。このデフォルトは、個人の生年月日の入力を許可する場合には適していません。次の例では、コンバータのfromString()メソッドを変更して、生年月日の2桁の年を最大で過去99年まで許可しています。
@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;
}
}
public final TextField getEditor()
public final ReadOnlyObjectProperty<TextField> editorProperty()
getEditor()
protected Skin<?> createDefaultSkin()
-fx-skin
を介してスキンが提供されていない場合にコントロール用のスキンを作成するために、またはsetSkin(...)
を使用してサブクラスで明示的に設定するために呼び出されます。createDefaultSkin
、クラス: Control
public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData()
public List<CssMetaData<? extends Styleable,?>> getControlCssMetaData()
getControlCssMetaData
、クラス: Control
public Object queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters)
queryAccessibleAttribute
、クラス: ComboBoxBase<LocalDate>
attribute
- リクエストされた属性parameters
- オプションのパラメータ・リストAccessibleAttribute
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.