Wie tausche ich Bildschirme in einer Javafx-Anwendung in der Controller-Klasse?

Hey, ich habe eine Weile im Internet gesucht, konnte aber keine Lösung für das folgende Problem finden:

In Javafx haben Sie 3 grundlegende Dateien; Die Controller-Klasse, die fxml-Datei und die Anwendungsklasse. Jetzt möchte ich in der Steuerung auf einen Tastendruck reagieren (das funktioniert einwandfrei) und den Bildschirm bei diesem Klick ändern (was Sie normalerweise mit stage.setScreen () tun), aber ich habe keinen Hinweis auf die Bühne (die Sie) finden Sie in der Anwendungsklasse).

Anwendungsbeispiel:

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);
}
}

FXML-Beispiel:

<?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>

Controller-Beispiel:

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
}    
}

Für jede Hilfe wäre ich dankbar.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage