Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在FXML中设置JavaFXDatePicker的默认值?_Java_Datetime_Datepicker_Javafx 8 - Fatal编程技术网

如何在FXML中设置JavaFXDatePicker的默认值?

如何在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的构造函数 例如:

是否可以在FXML级别初始化DatePicker的默认值

<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,您需要为该类创建并注册自定义生成器

  • 为LocalDate创建一个生成器。构建器必须实现javafx.util.builder及其构建方法。以下是采用三个参数(年、月、月天数)的生成器示例:

  • 以下是创建具有LocalDate类型的birthDate属性的人员的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());