【问题标题】:How to show a dialog with JFoenix - JAVAFX如何使用 JFoenix 显示对话框 - JAVAFX
【发布时间】:2023-03-05 03:14:02
【问题描述】:

我正在尝试使用 JFoenix 在屏幕上显示一个简单的对话框,但是,每次我尝试显示时,都会出现错误,“未设置 JFXDialog 容器” 我知道这意味着 stackPane 没有显示,所以我想知道如何初始化 StackPane 然后显示对话框

功能:

@FXML
public StackPane stack;

public void show() {
    JFXDialog dialog = new JFXDialog();
    dialog.setContent(new Label("Content"));
    dialog.show(stack);
}

stackpane 是使用 JavaFX 场景构建器创建的,它是 rootPane 的子级,它是一个锚窗格

【问题讨论】:

  • 您可以发布您正在使用的生成此错误的代码吗?
  • 准备好,编辑过的帖子
  • 你能发布完整的错误(堆栈跟踪)吗?另外,您使用的是什么版本的 Java 和 JFoenix?我刚刚使用 JDK 10.0.1 和 JFoenix 9.0.4 尝试了与您的代码非常相似的东西,并且没有引发异常。我什至尝试调用dialog.show(null),以防您的stacknull,但这会导致NullPointerException 而不是“未设置JFXDialog 容器”错误。
  • 我正在使用 JFoenix 8.0.1 和 JDK 8。我只收到“未设置 JFXDialog 容器”错误,仅此而已。但是我在网上搜索了一下,他们说我需要在调用Dialogo之前初始化StackPane,例如使用StackPane作为root。但是,我已经以 AnchorPane 为基础构建了整个布局

标签: javafx dialog jfoenix


【解决方案1】:

即使您发布问题已经有一段时间了,但这些天其他人可能会遇到同样的问题。

JFXDialog 需要 a) JFXDialogLayout 和 b) 容器,在您的情况下是 StackPane。因此,要使其工作,您必须向您的 JFXDialog 指明容器是什么。这可以通过使用构造函数JFXDialog dialog = new JFXDialog(stack, layout, JFXDialog.DialogTransition.RIGHT); 来完成。那就是:

@FXML
public StackPane stack;

public void show() {
    JFXDialogLayout layout = new JFXDialogLayout();
    layout.setHeading(new Label("Header"));
    layout.setBody(new Label("Lorem ipsum"));

    JFXDialog dialog = new JFXDialog(stack, layout, 
                             FXDialog.DialogTransition.RIGHT);
    JFXDialog.DialogTransition.RIGHT);
    dialog.show();
}

这应该可以完成工作。

【讨论】:

    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多