我使用的是Jfoenix,JFXDialog不出现。
我做错什么了?以下是代码:
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);
dialog.show();发布于 2017-06-23 19:25:39
您要做的是将您的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);在这里之后,如果stack窗格是根窗格,那么只需创建场景,然后分别显示primaryStage和对话框(实际上,您不必先显示primaryStage,然后显示对话框,但这个顺序更有意义)。
Scene scene = new Scene(stackpane, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
dialog.show();如果已经有另一个根窗格,则在显示primaryStage和对话框之前向其添加堆栈窗格。
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();
}https://stackoverflow.com/questions/42905592
复制相似问题