Просто создайте экземпляр Testscherm2
, когда вам это нужно:
public class Testscherm extends VBox {
private Label label1;
private Button Button2;
private TextField txf1;
public Testscherm() {
buildGui();
}
public void buildGui() {
label1 = new Label("label1");
Button2 = new Button("click me");
txf1 = new TextField();
this.getChildren().addAll(label1, Button2, txf1);
Button2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
Testscherm2 ts2 = new Testscherm2();
getScene().setRoot(ts2);
}
});
}
}
и
public class StartUp extends Application {
public Stage primaryStage;
@Override
public void start(Stage primaryStage) {
//eerste scherm
Testscherm ts = new Testscherm();
Scene scene1 = new Scene(ts, 400, 400);
priamryStage.setScene(scene1);
primaryStage.setTitle("TestScherm");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Если вам нужна большая гибкость (например, вы хотите переключиться назад идалее между представлениями) разложим «текущее состояние представления» в нечто вроде модели представления:
public class CurrentViewState {
private final Parent view1 ;
private final Parent view2 ;
private final ObjectProperty<Parent> currentView ;
public CurrentViewState() {
view1 = new Testscherm(this);
view2 = new Testscherm2(this);
currentView = new SimpleObjectProperty<>(view1);
}
public ObjectProperty<Parent> currentViewProperty() {
return currentView ;
}
public final Parent getCurrentView() {
return currentViewProperty().get();
}
public final void setCurrentView(Parent currentView) {
currentViewProperty().set(currentView);
}
public Parent getView1() {
return view1 ;
}
public Parent getView2() {
return view2 ;
}
}
А затем:
public class Testscherm extends VBox {
private Label label1;
private Button Button2;
private TextField txf1;
private final CurrentViewState viewState ;
public Testscherm(CurrentViewState viewState) {
this.viewState = viewState ;
buildGui();
}
public void buildGui() {
label1 = new Label("label1");
Button2 = new Button("click me");
txf1 = new TextField();
this.getChildren().addAll(label1, Button2, txf1);
Button2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
viewState.setCurrentView(viewState.getView2());
}
});
}
}
и
public class StartUp extends Application {
public Stage primaryStage;
@Override
public void start(Stage primaryStage) {
//eerste scherm
CurrentViewState viewState = new CurrentViewState();
Scene scene = new Scene(viewState.getCurrentView(), 400, 400);
scene.rootProperty().bind(viewState.currentViewProperty());
primaryStage.setScene(scene);
primaryStage.setTitle("TestScherm");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}