如何在 Java FXML 应用程序中初始化 DatePicker?

单击“添加约会”按钮时,会弹出新表单,但 DatePicker 为空(应填充 LocalDate.now()),并且周六/周日日期均未禁用。尝试在 Initialize 和启动新场景的方法中调用设置方法。无论我将它放在一个或另一个或两个中,它都不起作用。请告知我做错了什么。谢谢。

显示 DatePicker 值空白且日历中没有禁用日期的图像。

http://img2.mukewang.com/64005ae20001d66606580391.jpg

package gci.controllers.dialogs;


import gci.App;

import gci.models.Appointment;

import gci.utilities.CustomerDAO;

import java.io.IOException;

import java.net.URL;

import java.sql.SQLException;

import java.time.*;

import java.util.*;

import java.util.logging.*;

import java.util.stream.*;

import javafx.collections.*;

import javafx.event.ActionEvent;

import javafx.fxml.*;

import javafx.scene.*;

import javafx.scene.control.*;

import javafx.scene.layout.*;

import javafx.stage.*;

import javafx.util.*;


public class AddAppointmentController implements Initializable {


    @FXML private ChoiceBox<String> nameChoiceBox;

    @FXML private ChoiceBox<String> typeChoiceBox;

    @FXML private ChoiceBox<String> timeChoiceBox;

    @FXML private Label titleLabel;

    @FXML private Label copyrightLabel;

    @FXML private Button saveButton;

    @FXML private Button cancelButton;

    @FXML private DatePicker datePicker;


    private final CustomerDAO dao = new CustomerDAO();

    private Stage stage;

    private static final Region modal = new Region();


    @Override

    public void initialize(URL url, ResourceBundle rb) {

        initApptChoiceBoxes();

        setDatePicker();

        setCopyright();

        modal.setStyle("-fx-background-color: #00000099;");

    }


    private void initApptChoiceBoxes() {

        try {

            nameChoiceBox.setItems(dao.retrieveAll().stream().map(m -> m.getName())

                .collect(Collectors.toCollection(FXCollections::observableArrayList)));

        } catch (SQLException ex) {

            Logger.getLogger(AddAppointmentController.class.getName()).log(Level.SEVERE, null, ex);

        }


        typeChoiceBox.setItems(FXCollections.observableArrayList("In-Person", "Phone", "WebMeeting"));

    }

    }


有只小跳蛙
浏览 191回答 1
1回答

holdtom

DatePicker您在其中创建的实例永远setDatePicker()不会添加到场景中。它会覆盖加载 fxml 时DatePicker注入的对象(除非您没有正确添加)。在此方法中完成的所有其他修改也在此实例上完成。FXMLLoaderfx:id你需要更换线datePicker&nbsp;=&nbsp;new&nbsp;DatePicker(LocalDate.now());和datePicker.setValue(LocalDate.now());通常,您不应该为@FXML带注释的字段赋值。如果这需要“修复”aNullPointerException或类似的东西,您只需修复症状而不是修复实际问题。此规则可能有例外,但您需要了解一个事实,即您需要确保自己将节点添加到场景中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java