Creating a Pop-Up Window in JavaFX
如果你读过我发布的关于在javaFX中如何切换场景的文章, 你应该注意到在程序运行的整个期间, 只有一个窗口。但是如果你想要弹出一个窗口该怎么办呢?途径非常相似但又有点不同,当你想从原始窗口切换到新的窗口时候,你需要运用一点变化,关键是创建另一个stage。
Pop-up Window Java-FX Style
1.声明需要的控制块
2.构建控制块
3.构建面板
4.创建scene和state
5.按钮的点击方法
public class PopUpThing extends Application {
// 声明 各个组件
Button btnscene1, btnscene2;
Label lblscene1, lblscene2;
FlowPane pane1, pane2;
Scene scene1, scene2;
Stage thestage, newStage;
@Override
public void start(Stage primaryStage) {
thestage=primaryStage;
//参数转存 方法外可使用
//创建组件
btnscene1=new Button("Click to go to Other Scene");
btnscene2=new Button("Click to go back to First Scene");
btnscene1.setOnAction(e-> ButtonClicked(e));
btnscene2.setOnAction(e-> ButtonClicked(e));
lblscene1=new Label("Scene 1");
lblscene2=new Label("Scene 2");
//创建面板
pane1=new FlowPane();
pane2=new FlowPane();
pane1.setHgap(20);
pane2.setVgap(10);
//set background color of each Pane
pane1.setStyle("-fx-background-color:tan;-fx-padding:10px;");
pane2.setStyle("-fx-background-color:red;-fx-padding:10px;");
//组件加入面板
pane1.getChildren().addAll(lblscene1, btnscene1);
pane2.getChildren().addAll(lblscene2, btnscene2);
//make 2 scenes from 2 panes
scene1 = new Scene(pane1, 200, 100);
scene2 = new Scene(pane2, 200, 100);
//创建另一个stage
newStage = new Stage();
newStage.setScene(scene2);
//指定 stage 的模式
newStage.initModality(Modality.APPLICATION_MODAL);
newStage.setTitle("Pop up window");
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene1);
primaryStage.setMinWidth(300);
primaryStage.show();
}
public void ButtonClicked(ActionEvent e)
{
if (e.getSource()==btnscene1)
newStage.showAndWait();
else
newStage.close();
}
这步骤可算是模板了