java - JavaFX、FXML、登录表单和更改阶段或场景
问题描述
我用 Scene Builder 制作了简单的登录表单。登录表单工作正常,但是当我输入用户/密码并打开主窗口时,登录窗口仍然打开。如何关闭它?问候。
这是代码 DomaciFinal.java:
@Override
public void start(Stage stage) {
try {
Parent root = FXMLLoader.load(getClass().getResource("Login.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
} catch (IOException ex) {
System.out.println(ex);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
主控制器.java:
public class MainController {
@FXML
private Label lblStatus;
@FXML
private TextField txtUserName;
@FXML
private TextField txtPassword;
public void Login(ActionEvent event) throws Exception {
if (txtUserName.getText().equals("user") && txtPassword.getText().equals("pass")) {
lblStatus.setText("Uspešno ste ulogovani.");
Stage primaryStage = new Stage();
Parent root = FXMLLoader.load(getClass().getResource("Main.fxml"));
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
} else {
lblStatus.setText("Neispravni podaci.");
}
}
提前致谢。
解决方案
您可以采取的一种方法是将原始舞台的场景设置为您的主要场景。您需要更改您的主类来存储阶段并添加一个 getter 来获取 primaryStage,然后使用它而不是使用 Login 方法的 primaryStage。
推荐阅读
- eclipse - 在 src/test/resources 下的 maven 项目中创建文件夹
- java - 在 pom.xml 中传递 VM 参数
- python - swagger API - 创建一个完美的请求
- javascript - 笑话:测试一个嵌套的 Promise
- swift - 用点击关闭键盘时丢弃输入
- oop - oop中接口和抽象类之间的主要/主要区别是什么
- postgresql - Postgresql 不支持查询的时间戳值
- regex - 如何在PowerShell中使用正则表达式
- javascript - 使用 jQuery 日期选择器动态填充下拉列表
- api - 使用关键字搜索文章主题和文章内容