单击“添加约会”按钮时,会弹出新表单,但 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
	提交
		取消
	