我正在使用JavaFX 2编写登录屏幕。使用oracle文档
看起来相当不错http://docs.oracle.com/javafx/2/get_started/form.htm
但我想添加一个“注册”按钮,用同一个窗口改变场景。
我试过“pane.setVisible(value);”但那不起作用
这样做的最佳方式是什么?
答案 0 :(得分:2)
您必须从其他方法返回场景或在“开始”中创建场景,并在舞台上设置场景。例如:
public static Scene secondScene(final Stage primaryStage){
BorderPane pane = new BorderPane();
Label l = new Label("Second Scene");
pane.setCenter(l);
//let's say I have a button that changes back to original stage
Button b = new Button("Main stage");
b.setOnAction(new EventHandler<ActionEvent>(){
public void handle(ActionEvent t){
// create your own Scene and then set it to primaryStage
primaryStage.setScene(new Scene ... );
}
});
return new Scene(pane, 300, 300);
}
然后在你的开始方法:
@Override
public void start(Stage primaryStage){
BorderPane mainPane = new BorderPane();
Button b = new Button("Register");
mainPane.setCenter(b);
b.setOnAction(new EventHandler<ActionEvent>(){
public void handle(ActionEvent t){
primaryStage.setScene(secondScene(primaryStage));
}
});
primaryStage.setScene(new Scene(mainPane, 300,300));
primaryStage.show();
}
按下按钮时,这将变为“SecondScene”。
编辑//////////////////////////////////////// 基本上是:您需要将primaryStage作为参数传递给SecondScene才能在其上设置另一个Scene。 在这种情况下你可以做的是,制作一个输出主场景的方法,然后用它设置它。
public static Scene mainScene(final Stage primaryStage){
.....
return new Scene(...);
}