java - 如果选中某些按钮,则加载不同的场景
问题描述
因此,如果单击某些按钮,我将尝试加载三个特定场景。这是一个简单的加载屏幕,它调用其他三个场景,其中有 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() 放入。但是,如果两者都被禁用,它不会加载管理视图 - 它会加载学生视图。进一步调查...
编辑:好的,最后一个“else if”必须比其他两个先调用。它就像一个魅力。
推荐阅读
- kubernetes - Kubernetes pod 错误:创建多个服务
- apache-kafka - Kafka 流 metadataForKey 在运行良好 3-4 天后为任何键返回 null
- python - 获取 xticks,修改它们并在 pandas datetimeindex 图中替换它们
- python - 张量流中解码器的高效条件触发
- java - 如何从两个数组中交替字符?
- discord - Discord.js v12 中的 role.setPosition()
- sparql - 有没有办法绑定一个枚举 SPARQL 中的替代属性路径的变量?
- security - 如何在多租户应用程序中保护客户的域免受 DDOS 攻击?
- c# - 使用 code128.BarHeight 时在条形码下方显示文本
- nativescript - 无法在 nativescript 上安装 nativescript-ffmpeg-plugin