2016-10-26 9 views

ответ

0

Код для удаления этапа является:

stage.close(); 

с переменной стадии, соответствующей стадии вы хотите выйти

+0

Просто используйте stage.close или то, что вы можете сделать, это просто изменить сцены на той же стадии. –

+0

Используйте stage.close(); –

1

Вы можете использовать либо

primaryStage.close(); 

или

primaryStage.hide(); 

Согласно documentation, они полностью эквивалентны. Можно утверждать, что, поскольку hide() определен в суперклассе, он является более общим и, следовательно, немного предпочтительным. Например, если у вас нет ссылки на primaryStage непосредственно, но в какой-то узел, который отображается в нем, вы можете сделать

someNode.getScene().getWindow().hide(); 

но используя close() таким образом требует бросок.

Один «gotcha»: по умолчанию, когда последнее окно отображается закрыто, приложение завершает работу. Так что если вы

primaryStage.close(); 
Stage newStage = new Stage(); 
Scene newScene = new Scene(...); 
newStage.setScene(newScene); 
newStage.show(); 

плохое может случиться, потому что вы могли косвенно выйти из приложения перед тем, как показал новый этап (!). Вы можете изменить поведение по умолчанию здесь с

Platform.setImplicitExit(false); 

или, конечно, изменить порядок код так, что новый этап открывается перед существующим один закрыт.

0

набор FX: идентификатор на кнопке

<JFXButton fx:id="btn_login" prefHeight="41.0" prefWidth="242.0" style="-fx-background-color: #0098DA;" text="Login" textFill="WHITE" GridPane.columnIndex="1" GridPane.rowIndex="4"> 

в контроллере Java

Stage stage = (Stage) btn_login.getScene().getWindow(); 

ActionEvent

private void act_login(ActionEvent event) { //login pressed 
    stage.close(); 
    Stage primaryStage = new Stage(); 
    Parent root = null; 
    try { 
     root = FXMLLoader.load(getClass().getResource("../fxmlFile/main.fxml")); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    primaryStage.setTitle("Main Aplikasi Keuangan"); 
    primaryStage.setScene(new Scene(root, 600, 400)); 
    primaryStage.show(); 
}