单击“添加约会”按钮时,会弹出新表单,但 DatePicker 为空(应填充 LocalDate.now()),并且周六/周日日期均未禁用。尝试在 Initialize 和启动新场景的方法中调用设置方法。无论我将它放在一个或另一个或两个中,它都不起作用。请告知我做错了什么。谢谢。显示 DatePicker 值空白且日历中没有禁用日期的图像。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")); } }
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
DatePicker您在其中创建的实例永远setDatePicker()不会添加到场景中。它会覆盖加载 fxml 时DatePicker注入的对象(除非您没有正确添加)。在此方法中完成的所有其他修改也在此实例上完成。FXMLLoaderfx:id
你需要更换线
datePicker = new DatePicker(LocalDate.now());
和
datePicker.setValue(LocalDate.now());
通常,您不应该为@FXML带注释的字段赋值。如果这需要“修复”aNullPointerException或类似的东西,您只需修复症状而不是修复实际问题。此规则可能有例外,但您需要了解一个事实,即您需要确保自己将节点添加到场景中。
添加回答
举报
0/150
提交
取消
