Jak zamienić ekrany w aplikacji javafx w klasie kontrolera?

Hej Przeszukałem sieć przez dłuższy czas, ale nie mogłem znaleźć rozwiązania następującego problemu:

W javafx masz 3 podstawowe pliki; klasa kontrolera, plik fxml i klasa aplikacji. Teraz chcę zareagować w kontrolerze na kliknięcie przycisku (które działa doskonale) i zmienić ekran na tym kliknięciu (co zwykle robisz z stage.setScreen ()), ale nie mam żadnego odniesienia do sceny (którą ty można znaleźć w klasie aplikacji).

Przykład aplikacji:

public class JavaFXApplication4 extends Application {

@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();
}

/**
 * The main() method is ignored in correctly deployed JavaFX application.
 * main() serves only as fallback in case the application can not be
 * launched through deployment artifacts, e.g., in IDEs with limited FX
 * support. NetBeans ignores main().
 *
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}
}

Próbka FXML:

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="200.0" prefWidth="320.0"  xmlns:fx="http://javafx.com/fxml" fx:controller="javafxapplication4.SampleController">
  <children>
  <Button id="button" fx:id="nextScreen" layoutX="126.0" layoutY="90.0" onAction="#handleButtonAction" text="Next Screen" />
  <Label fx:id="label" layoutX="126.0" layoutY="120.0" minHeight="16.0" minWidth="69.0" />
  </children>
</AnchorPane>

Próbka kontrolera:

public class SampleController implements Initializable {

@FXML
private Label label;

@FXML
private void handleButtonAction(ActionEvent event) {
    System.out.println("You clicked me!");
    label.setText("Hello World!");
    //Here I want to swap the screen!
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}    
}

Byłbym wdzięczny za wszelką pomoc.

questionAnswers(3)

yourAnswerToTheQuestion