你在做什麼是,你正在添加你的JFXDialog到一個StackPane並顯示你的對話框。通過
JFXDialog dialog =new JFXDialog(stackpane, content, JFXDialog.DialogTransition.CENTER);
....
....
....
dialog.show();
其實這是做的是顯示對話框裏面的對話框創建對話框。問題是堆棧窗格從未顯示,所以對話框也不會顯示。這就像在計算機關閉時試圖打開文檔。
首先,這部分是完全正確的
JFXDialogLayout content= new JFXDialogLayout();
content.setHeading(new Text("Error, No selection"));
content.setBody(new Text("No student selected"));
StackPane stackpane = new StackPane();
JFXDialog dialog =new JFXDialog(stackpane, content, JFXDialog.DialogTransition.CENTER);
JFXButton button=new JFXButton("Okay");
button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
dialog.close();
}
});
content.setActions(button);
這裏如果stackpane是你的根窗格剛剛從創建現場,並分別顯示primaryStage和對話後(實際上你沒有表現出primaryStage第一和對話框第二,但這個順序更有意義)。
Scene scene = new Scene(stackpane, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
dialog.show();
如果你已經有了另一根窗格顯示primaryStage和對話前stackpane添加到它。
AnchorPane root = new AnchorPane();
....
.... //Some other Nodes here
JFXDialogLayout content= new JFXDialogLayout();
content.setHeading(new Text("Error, No selection"));
content.setBody(new Text("No student selected"));
StackPane stackPane = new StackPane();
JFXDialog dialog =new JFXDialog(stackPane, content, JFXDialog.DialogTransition.CENTER);
JFXButton button=new JFXButton("Okay");
button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
dialog.close();
}
});
content.setActions(button);
Scene scene = new Scene(root, 300, 250);
root.getChildren().add(stackPane);
primaryStage.setScene(scene);
primaryStage.show();
dialog.show();
primaryStage來自應用程序類的過載啓動方法。以下是根窗格作爲堆棧窗格。
@Override
public void start(Stage primaryStage) throws Exception {
JFXDialogLayout content= new JFXDialogLayout();
content.setHeading(new Text("Error, No selection"));
content.setBody(new Text("No student selected"));
StackPane stackpane = new StackPane();
JFXDialog dialog =new JFXDialog(stackpane, content, JFXDialog.DialogTransition.CENTER);
JFXButton button=new JFXButton("Okay");
button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
dialog.close();
}
});
content.setActions(button);
Scene scene = new Scene(stackpane, 300, 250);
primaryStage.setScene(scene);
dialog.show();
primaryStage.show();
}