2015-12-02 89 views
0

我剛開始學習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; 
     } 

    } 
} 

回答

1

您可以使用任何NodeScene獲得參考那個場景。您可以使用Scene來獲取包含它的Window。您可以關閉該窗口。這裏

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

剛一說明:

假設Node字段由裝載機實際注入,您可以使用此代碼關閉Stage要麼確保做到這一點*後*您展示的新窗口,或者先在應用程序的某個地方調用['Platform.setImplicitExit(false);'](http://docs.oracle.com/javase/8/javafx/api/javafx/application/Platform.html#setImplicitExit-boolean-) 。 –