我正在学习JavaFx并且还没有达到FXML。我被困在一个应用程序中,我计划在用户在第二个场景上输入凭据后返回应用程序的主场景。我设法从主要场景中调出第二个场景但是我无法从第二个场景到达主场景。我尝试使用吸气剂获取主场景和窗格,但没有运气。你们能以正确的方式教学吗?
提前谢谢你。
public class Landing extends Application {
BorderPane bp;
Scene scene;
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Welcome to our Telco!");
bp = new BorderPane();
VBox vbox = new VBox();
Button login = new Button("Login");
login.setMinWidth(100);
Button acc = new Button("Account Information");
acc.setMinWidth(100);
vbox.getChildren().addAll(acc);
bp.setCenter(vbox);
acc.setOnAction(e ->{
AccountInfo account = new AccountInfo();
primaryStage.setTitle("Account Information"); // Set the stage title
primaryStage.getScene().setRoot(account.getbp());; // Place the scene in the stage
});
scene = new Scene(bp, 750, 550);
primaryStage.setScene(scene);
primaryStage.show();
}
public Pane getbp() {
return bp;
}
public Scene getSc(){
return scene;
}
获取主场景的按钮
public class AccountInfo {
BorderPane pane;
Landing main = new Landing();
Scene scene;
AccountInfo() {
Button c = (new Button("Back"));
c.setStyle("-fx-background-color: pink");
c.setOnAction((ActionEvent e) -> {
main.getbp();
main.getSc();
});
public Pane getbp() {
return pane;
}
}
答案 0 :(得分:1)
Landing
不是一个场景,而是一个Application
。到目前为止,您所展示的内容在整个应用程序中只有一个场景。您绝不能尝试在同一JavaFX应用程序生命周期内实例化(并随后运行)任何Application
类的多个实例。当你在Landing main = new Landing();
课程AccountInfo
Application.launch
时,你正朝着这个方向前进
来自public class Landing extends Application {
BorderPane bp;
Scene scene;
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Welcome to our Telco!");
bp = new BorderPane();
VBox vbox = new VBox();
Button login = new Button("Login");
login.setMinWidth(100);
Button acc = new Button("Account Information");
acc.setMinWidth(100);
vbox.getChildren().addAll(acc);
bp.setCenter(vbox);
acc.setOnAction(e -> {
primaryStage.setTitle("Account Information"); // Set the stage title
BorderPane infoScenePane = new BorderPane();
Scene infoScene = new Scene(infoScenePane);
primaryStage.setScene(infoScene);
});
scene = new Scene(bp, 750, 550);
primaryStage.setScene(scene);
primaryStage.show();
}
}
的{{1}}:
抛出:IllegalStateException - 如果多次调用此方法 一次。
您需要的是拥有第一个登录场景(即输入凭证)。登录成功后,您将创建一个新的场景对象,并使用下一个“视图”填充该场景,然后将该新场景设置为舞台。
http://myofwexperiments.blogspot.in/2016/01/soa-clustered-domain.html