26 æ¥ä»ããã«ãŒ
ãã®ç« ã§ã¯ãJavaFXã§ãµããŒããããŠããæ¥ä»ããŒã¿ã®æŠèŠã瀺ããDatePickerã³ã³ãããŒã«ã®åºæ¬æ©èœã«ã€ããŠèª¬æããŸãã
JavaFX DatePickerã¯ãç¹å®ã®ã«ã¬ã³ãããæ¥ä»ãéžæã§ããã³ã³ãããŒã«ã§ãã ããã¯äž»ã«ããŠãŒã¶ãŒãæ¥ä»ãå
¥åããå¿
èŠãããWebãµã€ããã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããŸãã DatePickerã³ã³ãããŒã«ã¯ãæ¥ä»ãã£ãŒã«ããšæ¥ä»ãã¥ãŒã¶ãããã³ã³ãã»ããã¯ã¹ã§æ§æãããŠããŸãã
æéããŒã¿ãšæ¥ä»æžåŒã®äœ¿çš
JDK 8ã«å°å ¥ãããŠããæ°ããæ¥æAPIã䜿çšãããšãæ§ã ãªã¿ã€ã ãŸãŒã³ã«ãããã«ã¬ã³ãããã³ããŒã«ã«æéã®èšå®ãå«ããæ¥æããŒã¿ã䜿çšããæ§ã ãªæäœãå®è¡ã§ããŸãã
æ¥æAPIã®åºæ¬ããã±ãŒãžã¯java.timeã§ãã ããã«ã¯ãåœéæšæºåæ©æ§(ISO)ã®ã«ã¬ã³ãã«åºã¥ããŠæŠäœç³»å
ã®æéãå®çŸ©ããããã«æ¬¡ã®ã¯ã©ã¹ãçšæãããŠããŸãã
-
Clock- ã¿ã€ã ãŸãŒã³ã䜿çšããŠçŸåšã®æç¹ãæ¥ä»ããã³æéãžã®ã¢ã¯ã»ã¹ãæäŸããã¯ãã㯠-
Duration- æéããŒã¹ã®æéé -
Instant- æç³»åäžã®äžç¬ã®ç¹ -
LocalDate- ISO-8601æŠäœç³»ã®ã¿ã€ã ãŸãŒã³ã®ãªãæ¥ä» -
LocalDateTime- ISO-8601æŠäœç³»ã®ã¿ã€ã ãŸãŒã³ã®ãªãæ¥æ -
LocalTime- ISO-8601æŠäœç³»ã®ã¿ã€ã ãŸãŒã³ã®ãªãæé -
MonthDay- ISO-8601æŠäœç³»ã§ã®æ¥ -
OffsetDateTime- ISO-8601æŠäœç³»ã§ã®ã°ãªãããž/UTCããã®ãªãã»ããä»ãã®æ¥æ -
OffsetTime- ISO-8601æŠäœç³»ã§ã®ã°ãªãããž/UTCããã®ãªãã»ããä»ãã®æé -
Period- æ¥ä»ããŒã¹ã®æéé -
Year- ISO-8601æŠäœç³»ã§ã®å¹Ž -
YearMonth- ISO-8601æŠäœç³»ã§ã®å¹Žæ -
ZonedDateTime- ISO-8601æŠäœç³»ã®ã¿ã€ã ãŸãŒã³ã®ããæ¥æ -
ZoneId- ã¿ã€ã ãŸãŒã³ID -
ZoneOffset- ã°ãªãããž/UTCããã®ã¿ã€ã ãŸãŒã³ã®ãªãã»ãã
䜿çšå¯èœãªæ©èœããã³ã³ãŒãã»ãµã³ãã«ã®è©³çްã¯ãJavaãã¥ãŒããªã¢ã«ã®æ¥æAPIããã¬ãŒã«ã«é¢ããé ãåç §ããŠãã ããã
æ¥ä»ããã«ãŒã®èšèšã®æŠèŠ
JDK 8ã®æ¥æAPIã®æ°æ©èœã䜿çšããŠJavaFXã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã»ã€ã³ã¿ãã§ãŒã¹ãæ¡åŒµããããã«ãJavaFX SDKã«ã¯DatePickerã³ã³ãããŒã«ãå°å
¥ãããŠããŸãã DatePickerã³ã³ãããŒã«ã¯ãå³26-1ã«ç€ºãç·šéå¯èœãªã³ã³ãã»ããã¯ã¹(æ¥ä»ãã£ãŒã«ã)ãšã«ã¬ã³ã(æ¥ä»ãã¥ãŒã¶)ã§æ§æãããŠããŸãã
å³26-1 æ¥ä»ããã«ãŒã»ã³ã³ãããŒã«ã®äŸ

ãå³26-1 æ¥ä»ããã«ãŒã»ã³ã³ãããŒã«ã®äŸãã®èª¬æ
ã¢ããªã±ãŒã·ã§ã³UIãžã®æ¥ä»ããã«ãŒã®è¿œå
å³26-1ã«ç€ºãããã«ãjavafx.scene.controlããã±ãŒãžã«çšæãããŠããDatePickerã¯ã©ã¹ã䜿çšããŠãJavaFXã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã»ã€ã³ã¿ãã§ãŒã¹(UI)ã«æ¥ä»ããã«ãŒã»ã³ã³ããŒãã³ãã远å ããŸãã
äŸ26-1 æ¥ä»ããã«ãŒã»ã³ã³ããŒãã³ãã®è¿œå
import java.util.Locale;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.scene.Scene;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class DatePickerSample extends Application {
private Stage stage;
private DatePicker checkInDatePicker;
public static void main(String[] args) {
Locale.setDefault(Locale.US);
launch(args);
}
@Override
public void start(Stage stage) {
this.stage = stage;
stage.setTitle("DatePickerSample ");
initUI();
stage.show();
}
private void initUI() {
VBox vbox = new VBox(20);
vbox.setStyle("-fx-padding: 10;");
Scene scene = new Scene(vbox, 400, 400);
stage.setScene(scene);
checkInDatePicker = new DatePicker();
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
Label checkInlabel = new Label("Check-In Date:");
gridPane.add(checkInlabel, 0, 0);
GridPane.setHalignment(checkInlabel, HPos.LEFT);
gridPane.add(checkInDatePicker, 0, 1);
vbox.getChildren().add(gridPane);
}
}
äŸ26-1ã§ã¯ãããã«äºçŽã®ãã§ãã¯ã€ã³æ¥ãéžæããããã®äžè¬çãªUIãå®è£ ããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã€ã«ããŠå®è¡ãããšãå³26-2ã«ç€ºãã³ã³ããŒãã³ãã衚瀺ãããŸãã
å³26-2 æ¥ä»ããã«ãŒã»ã³ã³ããŒãã³ãã®åæãã¥ãŒ

ãå³26-2 æ¥ä»ããã«ãŒã»ã³ã³ããŒãã³ãã®åæãã¥ãŒãã®èª¬æ
æ¥ä»ãã£ãŒã«ãã®åæç¶æ
ã¯ç©ºã§ããããšã«æ³šæããŠãã ããã ãã ãããã®åäœã倿Žããæ¥ä»ãéžæãããåã«æ¥ä»å€ã衚瀺ãããããæå®ããããšãã§ããŸãã DatePickerã³ã³ã¹ãã©ã¯ã¿ã«valueããããã£ãèšå®ããããComboBoxã¯ã©ã¹ããç¶æ¿ãããsetValueã¡ãœãããã³ãŒã«ããŸãã äŸ26-2ã«ãLocalDateå€ãèšå®ããããã®ãªãã·ã§ã³ãããã€ã瀺ããŸãã
äŸ26-2 æ¥ä»å€ã®èšå®
//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());
åæå€ãèšå®ãããšãã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã€ã«ããŠå®è¡ããåŸã«æ¥ä»ãã£ãŒã«ãã«è¡šç€ºãããŸãã å³26-3ã«ãæ¥ä»ãã£ãŒã«ãã«æå®ããåææ¥ä»ã瀺ããŸãã
å³26-3 åææ¥ä»ãæå®ããæ¥ä»ãã£ãŒã«ã

ãå³26-3 åææ¥ä»ãæå®ããæ¥ä»ãã£ãŒã«ããã®èª¬æ
DatePicker APIã«ã¯ãæ¥ä»ããã«ãŒã®ããã©ã«ãã®å€èгãšåäœã倿Žããããã«è€æ°ã®ããããã£ããã³ã¡ãœãããçšæãããŠããŸãã ç¹ã«ãé±çªå·ã®è¡šç€ºã®åæ¿ããæ¥ä»æžåŒã®ã«ã¹ã¿ãã€ãºãããã³æ¥ä»ã»ã«ã»ãã¡ã¯ããªã®å®çŸ©ãšé©çšãå¯èœã§ãã
æ¥ä»ããã«ãŒã®ã«ã¹ã¿ãã€ãº
ã«ã¬ã³ãã§ISOã®é±çªå·ã®è¡šç€ºãæå¹ãŸãã¯ç¡å¹ã«ããã«ã¯ãDatePickerã¯ã©ã¹ã®setShowWeekNumbersã¡ãœããã䜿çšããŸãã äŸ26-3ã¯ããã®ã¿ã¹ã¯ãcheckInDatePickerã«å®è£
ããã³ãŒãè¡ã§ãã
ãã®å€æŽã«ãããå³26-4ã«ç€ºãããã«ãã«ã¬ã³ãèŠçŽ ã«é±çªå·ã远å ãããæ¥ä»ããã«ãŒã»ã³ã³ããŒãã³ããçæãããŸãã
å³26-4 ã«ã¬ã³ãã§ã®é±çªå·ã®è¡šç€º

ãå³26-4 ã«ã¬ã³ãã§ã®é±çªå·ã®è¡šç€ºãã®èª¬æ
ããã©ã«ãã§ã¯ãæ¥ä»ãã£ãŒã«ãã®æ¥ä»ã¯ãã·ã¹ãã ã»ãã±ãŒã«ããã³ISOæŠäœç³»ã«ãã£ãŠå®çŸ©ãããæžåŒã§è¡šç€ºãããŸãã ãã®ãããäŸ26-1ã§éžæããæ¥ä»ã¯ãmm/dd/yyyyã®æžåŒã§è¡šç€ºãããŸãã éåžžããã®ããã©ã«ãã®æžåŒã倿Žããå¿
èŠã¯ãããŸããã ãã ããå¿
èŠãªå Žåã¯ãDatePickerã¯ã©ã¹ã®converterããããã£ããã³setConverterã¡ãœããã䜿çšããŠãå¥ã®æ¥ä»æžåŒãèšå®ã§ããŸãã converterå€ãnullã«èšå®ãããšãããã©ã«ãã®æ¥ä»æžåŒã«æ»ããŸãã
äŸ26-4ã§ã¯ãyyyy-MM-ddã®ãã¿ãŒã³ã«å¿ããŠæ¥ä»ã®æžåŒã倿Žããããã®ã³ã³ããŒã¿ãäœæããŠããŸãã ããã«ããããŠãŒã¶ãŒãæ¥ä»ãã£ãŒã«ãã«æ¥ä»ãå
¥åãããšãã«ãå
¥åããã¹ããLocalDateã¿ã€ãã®ãªããžã§ã¯ãã«å€æããŸãã ãŸããã«ã¬ã³ãã§éžæããæ¥ä»ã«å¯Ÿå¿ããLocalDateãªããžã§ã¯ãããæ¥ä»ãã£ãŒã«ãã«è¡šç€ºãããããã¹ãã«å€æããŸãã
äŸ26-4 æ¥ä»æžåŒã®å€æ
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.scene.Scene;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.StringConverter;
public class DatePickerSample extends Application {
private Stage stage;
private DatePicker checkInDatePicker;
private final String pattern = "yyyy-MM-dd";
public static void main(String[] args) {
Locale.setDefault(Locale.US);
launch(args);
}
@Override
public void start(Stage stage) {
this.stage = stage;
stage.setTitle("DatePickerSample ");
initUI();
stage.show();
}
private void initUI() {
VBox vbox = new VBox(20);
vbox.setStyle("-fx-padding: 10;");
Scene scene = new Scene(vbox, 400, 400);
stage.setScene(scene);
checkInDatePicker = new DatePicker();
StringConverter converter = new StringConverter<LocalDate>() {
DateTimeFormatter dateFormatter =
DateTimeFormatter.ofPattern(pattern);
@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;
}
}
};
checkInDatePicker.setConverter(converter);
checkInDatePicker.setPromptText(pattern.toLowerCase());
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
Label checkInlabel = new Label("Check-In Date:");
gridPane.add(checkInlabel, 0, 0);
GridPane.setHalignment(checkInlabel, HPos.LEFT);
gridPane.add(checkInDatePicker, 0, 1);
vbox.getChildren().add(gridPane);
checkInDatePicker.requestFocus();
}
}
äŸ26-4ã§ã¯ãæ¥ä»æžåŒã倿ããã ãã§ãªããå¿ èŠãªæ¥ä»æžåŒã«ã€ããŠãŠãŒã¶ãŒã«éç¥ããããã®ããã³ããã»ããã¹ããæ¥ä»ãã£ãŒã«ãã«èšå®ããŠããŸãã å³26-5ã«ãæ¥ä»æžåŒã³ã³ããŒã¿ãé©çšãããæ¥ä»ããã«ãŒã®2ã€ã®ç¶æ ã瀺ããŸãã ããã³ããã»ããã¹ããšéžæããæ¥ä»ã®äž¡æ¹ãæ°ããæžåŒã§è¡šç€ºãããŠããŸãã
å³26-5 æžåŒã³ã³ããŒã¿ãšããã³ããã»ããã¹ããé©çšãããæ¥ä»ããã«ãŒ

ãå³26-5 æžåŒã³ã³ããŒã¿ãšããã³ããã»ããã¹ããé©çšãããæ¥ä»ããã«ãŒãã®èª¬æ
ããã©ã«ãã®å€èгã倿Žããããã«ã¬ã³ãèŠçŽ ã®1ã€ä»¥äžã®ã»ã«ã«ç¹å®ã®åäœãèšå®ããããšãã§ããŸãã ãã®ã¿ã¹ã¯ãå®è£ ããã«ã¯ãå®éã®ãŠãŒã¹ã±ãŒã¹(ããã«ã®äºçŽæã«ããããã§ãã¯ã€ã³æ¥ãšãã§ãã¯ã¢ãŠãæ¥ã®éžæ)ã«ã€ããŠèããŠã¿ãŸãã äŸ26-5ã§ã¯ã2ã€ã®æ¥ä»ããã«ãŒã䜿çšããŠäžè¬çãªãŠãŒã¶ãŒã»ã€ã³ã¿ãã§ãŒã¹ãäœæããŠããŸãã
äŸ26-5 2ã€ã®æ¥ä»ããã«ãŒã»ã³ã³ããŒãã³ãã®è¿œå
import java.time.LocalDate;
import java.util.Locale;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.scene.Scene;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class DatePickerSample extends Application {
private Stage stage;
private DatePicker checkInDatePicker;
private DatePicker checkOutDatePicker;
public static void main(String[] args) {
Locale.setDefault(Locale.US);
launch(args);
}
@Override
public void start(Stage stage) {
this.stage = stage;
stage.setTitle("DatePickerSample ");
initUI();
stage.show();
}
private void initUI() {
VBox vbox = new VBox(20);
vbox.setStyle("-fx-padding: 10;");
Scene scene = new Scene(vbox, 400, 400);
stage.setScene(scene);
checkInDatePicker = new DatePicker();
checkOutDatePicker = new DatePicker();
checkInDatePicker.setValue(LocalDate.now());
checkOutDatePicker.setValue(checkInDatePicker.getValue().plusDays(1));
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
Label checkInlabel = new Label("Check-In Date:");
gridPane.add(checkInlabel, 0, 0);
GridPane.setHalignment(checkInlabel, HPos.LEFT);
gridPane.add(checkInDatePicker, 0, 1);
Label checkOutlabel = new Label("Check-Out Date:");
gridPane.add(checkOutlabel, 0, 2);
GridPane.setHalignment(checkOutlabel, HPos.LEFT);
gridPane.add(checkOutDatePicker, 0, 3);
vbox.getChildren().add(gridPane);
}
}
äŸ26-5ã®checkInDatePickerã®äºåå®çŸ©æžã®å€ã¯ãã·ã¹ãã ã»ã¯ããã¯ã®çŸåšã®æ¥ä»ã«å¯Ÿå¿ããLocalDate.now()ã§ãã checkOutDatePickerã®äºåå®çŸ©æžã®æ¥ä»ã¯ãçŸåšã®æ¥ä»ã®ç¿æ¥ã§ãã
ãã®äŸã2013幎9æ19æ¥ã§ã³ã³ãã€ã«ããŠå®è¡ãããšãå³26-6ã«ç€ºãåºåãçæãããŸãã
å³26-6 2ã€ã®æ¥ä»ããã«ãŒã»ã³ã³ããŒãã³ã

ãå³26-6 2ã€ã®æ¥ä»ããã«ãŒã»ã³ã³ããŒãã³ããã®èª¬æ
ããã©ã«ãã§ã¯ãã«ã¬ã³ãèŠçŽ å ã®ãã¹ãŠã®ã»ã«ãéžæå¯èœã§ãã ãã®å Žåããã§ãã¯ã¢ãŠãæ¥ããã§ãã¯ã€ã³æ¥ã®åã«ãªãå¯èœæ§ããããŸãããããã¯æ£ãããããŸããã
äŸ26-6ã§ã¯ãcheckInDatePickerã§éžæããæ¥ä»ã«å¯Ÿå¿ããã»ã«ãããã³ããããåã®æ¥ä»ã«å¯Ÿå¿ãããã¹ãŠã®ã»ã«ãç¡å¹ã«ããããã«ãcheckOutDatePickerã«å¯ŸããŠæ¥ä»ã»ã«ã»ãã¡ã¯ããªãäœæããŠããŸãã
äŸ26-6 ç¹å®ã®æ¥ä»ãç¡å¹ã«ããããã®æ¥ä»ã»ã«ã»ãã¡ã¯ããªã®å®è£
import java.time.LocalDate;
import java.util.Locale;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.scene.Scene;
import javafx.scene.control.DateCell;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Callback;
public class DatePickerSample extends Application {
private Stage stage;
private DatePicker checkInDatePicker;
private DatePicker checkOutDatePicker;
public static void main(String[] args) {
Locale.setDefault(Locale.US);
launch(args);
}
@Override
public void start(Stage stage) {
this.stage = stage;
stage.setTitle("DatePickerSample ");
initUI();
stage.show();
}
private void initUI() {
VBox vbox = new VBox(20);
vbox.setStyle("-fx-padding: 10;");
Scene scene = new Scene(vbox, 400, 400);
stage.setScene(scene);
checkInDatePicker = new DatePicker();
checkOutDatePicker = new DatePicker();
checkInDatePicker.setValue(LocalDate.now());
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);
if (item.isBefore(
checkInDatePicker.getValue().plusDays(1))
) {
setDisable(true);
setStyle("-fx-background-color: #ffc0cb;");
}
}
};
}
};
checkOutDatePicker.setDayCellFactory(dayCellFactory);
checkOutDatePicker.setValue(checkInDatePicker.getValue().plusDays(1));
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
Label checkInlabel = new Label("Check-In Date:");
gridPane.add(checkInlabel, 0, 0);
GridPane.setHalignment(checkInlabel, HPos.LEFT);
gridPane.add(checkInDatePicker, 0, 1);
Label checkOutlabel = new Label("Check-Out Date:");
gridPane.add(checkOutlabel, 0, 2);
GridPane.setHalignment(checkOutlabel, HPos.LEFT);
gridPane.add(checkOutDatePicker, 0, 3);
vbox.getChildren().add(gridPane);
}
}
checkOutDatePickerã«é©çšãããdayCellFactoryã¯ãsetDisableããã³setStyleã¡ãœãããDateCellé
ç®ã«å¯ŸããŠã³ãŒã«ããç¹å®ã®ã»ã«ãéžæã§ããªãããã«ãããããããã³ã¯è²ã«ããŠããŸãã
äŸ26-6ã®ã³ãŒããã³ã³ãã€ã«ããŠå®è¡ãããšãDatePickerSampleã§ã¯ãå³26-7ã«ç€ºãããã«ãæå®ã®åäœã§UIãçæãããŸãã
å³26-7 ã«ã¬ã³ãèŠçŽ ã®ã»ã«ã®ç¡å¹å

ãå³26-7 ã«ã¬ã³ãèŠçŽ ã®ã»ã«ã®ç¡å¹åãã®èª¬æ
ãããŸã§ãæ¥ä»ã»ã«ã»ãã¡ã¯ããªã®äœææ¹æ³ã«ã€ããŠåŠç¿ããŸãããããã§ãcheckOutDatePickerã®ããã©ã«ãã®åäœãæ¡åŒµããéžæå¯èœãªæ¥ä»ã»ã«ã«è¿œå æ©èœãèšå®ã§ããããã«ãªããŸãã
äŸ26-7ã§ã¯ãcheckInDatePickerã§éžæããæ¥ä»ãšçŸåšã®æ¥ä»ã»ã«ã®éã®æ¥ä»ééãèšç®ããŠããŸãã ãã®çµæã¯ãã»ã«ã»ããŒã«ãããã§ã¬ã³ããªã³ã°ãããŸãã
äŸ26-7 æéééã®èšç®
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Locale;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.scene.Scene;
import javafx.scene.control.DateCell;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Callback;
public class DatePickerSample extends Application {
private Stage stage;
private DatePicker checkInDatePicker;
private DatePicker checkOutDatePicker;
public static void main(String[] args) {
Locale.setDefault(Locale.US);
launch(args);
}
@Override
public void start(Stage stage) {
this.stage = stage;
stage.setTitle("DatePickerSample ");
initUI();
stage.show();
}
private void initUI() {
VBox vbox = new VBox(20);
vbox.setStyle("-fx-padding: 10;");
Scene scene = new Scene(vbox, 400, 400);
stage.setScene(scene);
checkInDatePicker = new DatePicker();
checkOutDatePicker = new DatePicker();
checkInDatePicker.setValue(LocalDate.now());
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);
if (item.isBefore(
checkInDatePicker.getValue().plusDays(1))
) {
setDisable(true);
setStyle("-fx-background-color: #ffc0cb;");
}
long p = ChronoUnit.DAYS.between(
checkInDatePicker.getValue(), item
);
setTooltip(new Tooltip(
"You're about to stay for " + p + " days")
);
}
};
}
};
checkOutDatePicker.setDayCellFactory(dayCellFactory);
checkOutDatePicker.setValue(checkInDatePicker.getValue().plusDays(1));
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
Label checkInlabel = new Label("Check-In Date:");
gridPane.add(checkInlabel, 0, 0);
GridPane.setHalignment(checkInlabel, HPos.LEFT);
gridPane.add(checkInDatePicker, 0, 1);
Label checkOutlabel = new Label("Check-Out Date:");
gridPane.add(checkOutlabel, 0, 2);
GridPane.setHalignment(checkOutlabel, HPos.LEFT);
gridPane.add(checkOutDatePicker, 0, 3);
vbox.getChildren().add(gridPane);
}
}
倿ŽããDatePickerSampleã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã€ã«ããŠå®è¡ãããšãæ¥ä»ã»ã«ã®äžã«ããŠã¹ã»ã«ãŒãœã«ã眮ãããšãã«ããŒã«ãããã衚瀺ãããŸãã å³26-8ã¯ã9æ30æ¥ã®ã»ã«ã®äžã«ããŠã¹ã»ã«ãŒãœã«ã眮ããç¬éãæããŠããŸãã ãã®ããŒã«ãããã¯ã9æ19æ¥ãš9æ30æ¥ã®éã®æ¥æ°ã11æ¥éã§ããããšã瀺ããŠããŸãã
å³26-8 æ¥ä»ã»ã«ã®ããŒã«ãããã®èšå®

ãå³26-8 æ¥ä»ã»ã«ã®ããŒã«ãããã®èšå®ãã®èª¬æ
æŠäœç³»ã®å€æŽ
JDK 8ã«å°å ¥ãããŠããæ¥æJava APIã䜿çšãããšãéçºè ã¯ãISOããŒã¹ã®æŠäœç³»ã ãã§ãªããåæŠãã€ã¹ã©ã æŠãæ°åœæŠããã³ã¿ã€ä»æŠãªã©ã®å¥ã®æŠäœç³»ã䜿çšã§ããŸãã
DatePickerã³ã³ãããŒã«ã¯ãé©åã«å¹Žãã¬ã³ããªã³ã°ããããšã«ãã£ãŠISO以å€ã®æŠäœç³»ããµããŒãããŠããŸãã æã®æ¥ä»ãISOã®æ¥ä»ãšã¯ç°ãªãã€ã¹ã©ã æŠã®å ŽåãISOãšã€ã¹ã©ã æŠã®æ¥ä»ãåºå¥ããããã«å¥ã®èŠèŠããŒããçšæãããŠããŸãã
äŸ26-8ã§ã¯ãã¿ã€ä»æŠãcheckInDatePickerã«é©çšããã€ã¹ã©ã æŠãcheckOutDatePickerã«é©çšããŠããŸãã
äŸ26-8 ã¿ã€ä»æŠãšã€ã¹ã©ã æŠã®é©çš
import java.time.chrono.*; checkInDatePicker.setChronology(ThaiBuddhistChronology.INSTANCE); checkOutDatePicker.setChronology(HijrahChronology.INSTANCE);
ãããã®è¡ãDatePickerSampleã¢ããªã±ãŒã·ã§ã³ã«é©çšãããšãå³26-9ã«ç€ºãããã«ãæ¥ä»ããã«ãŒã»ã³ã³ãããŒã«ã®å€èгã倿ŽãããŸãã
ISO以å€ã®æ¥ä»ã®ãµããŒãã®è©³çްã¯ãJavaãã¥ãŒããªã¢ã«ã®å¯Ÿå¿ããã¬ãã¹ã³ãåç §ããŠãã ããã
é¢é£ããã¥ã¡ã³ã


