因此,如果单击某些按钮,我将尝试加载三个特定的场景。这是一个简单的加载屏幕,它调用其他三个场景,这些场景具有2个文本字段(txtUser,txtPass)和2个按钮(btnCancel,btnEnter)和2个选择按钮(btnStd,btnProf),它们分别加载fxml-如果单击这两个,则返回第三个fxml禁用
棘手的部分在此Enter按钮中,在为学生和老师启用或禁用其他两个按钮之后,将调用该按钮。如果同时按下两个按钮,这也会加载三分之一:管理员
@FXML
private void onActionBtnEnter(ActionEvent event) {
try {
if (txtUser.getText() == null || txtUser.getText().isEmpty()) {
new Message().showModal(Alert.AlertType.ERROR, "User validation",
(Stage) btnEntrar.getScene().getWindow(),"Needs username");}
else if (txtPass.getText() == null || txtPass.getText().isEmpty()) {
new Message().showModal(Alert.AlertType.ERROR, "Password validation",
(Stage) btnEntrar.getScene().getWindow(), "Needs password");}
else {
FlowController.getInstance().goMain(); //this is one of the fxlm views to load
((Stage) btnEnter.getScene().getWindow()).close(); //closes the login and loads the scene
}
}
catch (Exception ex) {
Logger.getLogger(LandingViewController.class.getName()).log(Level.SEVERE, "Login error.", ex);
}
}
这可以正常工作,但是除了选择要加载的特定fxml之外,它只会加载包含administratorview.fxml的goMain()。我还做了一个goMain2()和goMain3()。
对于学生,应该加载studentsview.fxml。对于教授profesorview.fxml。以下是按钮方法和操作的代码
@FXML
private void onActionBtnStd(ActionEvent event) {
btnStd.setDisable(true);
txtPass.setDisable(false);
txtUser.setDisable(false);
}
@FXML
private void onActionBtnProf(ActionEvent event) {
btnProf.setDisable(true);
txtPass.setDisable(false);
txtUser.setDisable(false);
}
到目前为止很好,但是仅加载单个fxml,因为尚未调用它们。所以我想在btnEnter操作中应该有一些我尝试过的代码(与上述事件相同):
@FXML
private void onActionBtnEntrar(ActionEvent event) {
else if (btnStd.getValue().isDisabled()){ //added else if but I don't know how to call a boolean property in a void
FlowController.getInstance().goMain();
((Stage) btnEnter.getScene().getWindow()).close();}
else if (btnProf.getValue().isDisabled()){
FlowController.getInstance().goMain2();
((Stage) btnEnter.getScene().getWindow()).close();}
else if (btnProf.getValue().isDisabled() && btnStd.getValue().isDisabled()){
FlowController.getInstance().goMain3();
((Stage) btnEnter.getScene().getWindow()).close();}
不好意思,我在if语句中添加了.getValue()-所需要的只是将component.isDisabled()或.isEnabled()放入布尔值。但是,如果两者都被禁用,它不会加载adminview-它加载了studentview。进一步调查...
编辑:确定最后一个“否则”必须比其他两个优先。它就像一种魅力。