首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JFXDialog的JFoenix

使用JFXDialog的JFoenix
EN

Stack Overflow用户
提问于 2017-03-20 13:59:54
回答 1查看 6.1K关注 0票数 5

我使用的是Jfoenix,JFXDialog不出现。

我做错什么了?以下是代码:

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

发布于 2017-06-23 19:25:39

您要做的是将您的JFXDialog添加到StackPane并显示您的对话框。通过

代码语言:javascript
复制
JFXDialog dialog =new JFXDialog(stackpane, content, JFXDialog.DialogTransition.CENTER);
....
....
....
dialog.show();

实际上,这是在您的对话框创建的堆栈窗格中显示对话框。问题是堆栈窗格从未显示,因此对话框也不会显示。这就像在关闭计算机时试图打开文档一样。

首先,这部分是完全正确的

代码语言:javascript
复制
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,然后显示对话框,但这个顺序更有意义)。

代码语言:javascript
复制
Scene scene = new Scene(stackpane, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
dialog.show();

如果已经有另一个根窗格,则在显示primaryStage和对话框之前向其添加堆栈窗格。

代码语言:javascript
复制
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来自于应用程序类的过度启动方法。下面是以根窗格作为堆栈窗格的一个。

代码语言:javascript
复制
@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();
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42905592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档