首页 > 解决方案 > 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.");
    }
}

提前致谢。

标签: javajavafxloginjavafx-8scenebuilder

解决方案


您可以采取的一种方法是将原始舞台的场景设置为您的主要场景。您需要更改您的主类来存储阶段并添加一个 getter 来获取 primaryStage,然后使用它而不是使用 Login 方法的 primaryStage。


推荐阅读