java - 显示新场景后消除先前的场景

标签 java javafx

我刚刚开始学习JAVAFX,现在遇到了一个问题。我有一个登录屏幕,单击登录后,出现一个对话框,问题是我不知道如何在对话框显示后消除登录屏幕。请帮我。这是我的代码

Main.java(包含登录屏幕)

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("../view/LoginScreen.fxml"));
        primaryStage.setTitle("Weltes Mart O2 Tank Module");
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

LoginController.java(显示对话框)

public class LoginController {

    @FXML private Text loginStatusMessage;
    @FXML private Button btnLogin;

    @FXML public void handleLoginButton(ActionEvent event){
        System.out.println("BUTTON PRESSED");

        try {
            Parent root = FXMLLoader.load(getClass().getResource("../view/LoginSuccessDialog.fxml"));
            Stage primaryStage = new Stage();
            primaryStage.setScene(new Scene(root));
            primaryStage.show();
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }

    }
}

最佳答案

您可以使用任何 NodeScene 中获取对该场景的引用。您可以使用Scene 来获取包含它的Window。您可以关闭该窗口。

假设 Node 字段实际上是由加载程序注入(inject)的,您可以使用以下代码关闭 Stage:

btnLogin.getScene().getWindow().hide();

关于java - 显示新场景后消除先前的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037850/

相关文章:

java - 将 Javafx 文本字段中的十进制输入转换为 double

java - 如何在javaFX中定位多边形

java - 使用布局管理器和 JFrame,NullPointerException

java - 我如何知道 AmazonS3Client 是否已关闭?

java - 在javafx中更新组合框中的文本字体

JavaFX 应用程序名称

javafx.scene.input.KeyCombination 为 "Crtl++"

java - 安卓错误 : The RealmClass annotation does not support nested classes

java - 使用 HashMap 的 Set 迭代器不会产生值/键?

java - 如何对 Swing 台的不可编辑区域重新着色?