如何在FXML中设置JavaFXDatePicker的默认值?
是否可以在FXML级别初始化DatePicker的默认值如何在FXML中设置JavaFXDatePicker的默认值?,java,datetime,datepicker,javafx-8,Java,Datetime,Datepicker,Javafx 8,是否可以在FXML级别初始化DatePicker的默认值 <children> <DatePicker fx:id="datePicker" value="2015-07-20"/> <Label fx:id="messageLabel" textAlignment="JUSTIFY" /> </children> 显然,这会引发异常,是否可能调用LocalDate的构造函数 例如:
<children>
<DatePicker fx:id="datePicker" value="2015-07-20"/>
<Label fx:id="messageLabel" textAlignment="JUSTIFY" />
</children>
显然,这会引发异常,是否可能调用LocalDate的构造函数
例如:
<DatePicker fx:id="datePicker" value="LocalDate.of(2015,07,20)"/>
我确信您不能在FXML级别填充DatePicker,因为您不能在FXML级别实例化LocalDate对象,因为
LocalDate
没有默认构造函数LocalDate
没有静态的valueOf(String)
方法javafx.fxml.JavaFXBuilderFactory#getBuilder(LocalDate.class)
返回null
,表示没有LocalDate的生成器为了能够从FXML文件实例化java.time.LocalDate,您需要为该类创建并注册自定义生成器
...
此方法返回当前日期:-
// Date Now ### "To Date Picker"
public static final LocalDate NOW_LOCAL_DATE (){
String date = new SimpleDateFormat("dd-MM- yyyy").format(Calendar.getInstance().getTime());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate localDate = LocalDate.parse(date , formatter);
return localDate;
}
然后在initialize方法内调用它:
datePicker.setValue(NOW_LOCAL_DATE());
在控制器中,如果要实现可初始化,则可以执行以下操作:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy", this.locale);
birthDate.setValue(LocalDate.parse(formatter.format(LocalDate.now())));
您可以通过控制器将日期的默认值设置为今天。下面这句话对我有用
datePicker.setValue(LocalDate.now());
我意识到我可以把它扔到控制器的初始化中,但我想知道我是否可以在FXML级别填充它伟大的回答谢谢。我最后进入了控制器。嘿,谢谢你的回答!有点晚了,但仍然很有价值+1您的控制器在哪里?你在哪里定义的?
// Date Now ### "To Date Picker"
public static final LocalDate NOW_LOCAL_DATE (){
String date = new SimpleDateFormat("dd-MM- yyyy").format(Calendar.getInstance().getTime());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate localDate = LocalDate.parse(date , formatter);
return localDate;
}
datePicker.setValue(NOW_LOCAL_DATE());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy", this.locale);
birthDate.setValue(LocalDate.parse(formatter.format(LocalDate.now())));
datePicker.setValue(LocalDate.now());