【问题标题】:Load custom components in scenebuilder 17在scenebuilder 17中加载自定义组件
【发布时间】:2022-04-20 03:31:59
【问题描述】:

我们正在开发 Javafx 项目,该项目在 Java8 上运行良好。最近,我们用 Java17 更新了这个项目。我们能够为 IDEA 解决问题。

似乎在 Java 9+ 之后它们已经严格封装了所有类。要使用它,我们必须在 vm 选项中使用“export”“open”关键字或在编译运行时定义“ALL-UNNAMED”。

这在 IDEA 上运行良好。现在,我们正在尝试在场景构建器中加载 fxml 文件,但场景构建器无法找到这些类。我们已将所有必需的 jar 文件添加到 scenebuilder,但仍然无法加载 FXML 文件。

以下错误场景构建器显示:

java.lang.ClassNotFoundException: com.sun.javafx.scene.TreeShowingExpression

我们正在使用的库:

jfoenix.jar. fx_progress_circle.jar. fontawesomefx.jar

我们在 JFXCheckbox、JFXRadioButton、JFXSpinner 等上的 JFX 视图上遇到问题。

我们尝试了所有可能的解决方案,但无法解决。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: javafx scenebuilder gluon jfoenix fontawesomefx


    【解决方案1】:

    如 cmets 中所述,目前使用最新版本的 jfoenix 和 SceneBuilder,即使您执行本文中的步骤:

    JFXSpinner,JTextfield 似乎不适用于 Scenebuilder 版本 17。可能还有更多控件也不起作用。

    如果您按照这些步骤并发现明显的错误,那么您可能希望将这些报告给 jfoenix 团队。


    导入 jfoenix 和 fontawesomefx 库:

    1. 单击场景生成器库面板中的设置图标
    2. 选择 JAR/FXML 管理器
    3. 选择搜索存储库
    4. 搜索 jfoenix 和 fontawesomefx
    5. 选择以下库:
      • com.jfoenix:jfoenix
      • de.jensd:fontawesomefx-fontawesome
    6. Scene Builder 将导入每个的最新 lib 版本:
      • com.jfoenix:jfoenix:9.0.10
      • de.jensd:fontawesomefx-fontawesome:4.7.0-9.1.2.
    7. 现在可以在库管理器的“自定义”部分中选择所有导入的新组件。

    progress circle thing 不在 Maven 中心,您需要通过“JAR/FXML 管理器”对话框的“从文件系统添加库/FXML”选项导入它(我没有尝试过)。

    jfoenix github page 说它需要 9+ 才能使用 Java 9+。 我不认为 jfoenix 维护得很好,并且(来自 StackOverflow 上关于库的其他一些问题),它主要适用于最近的 SceneBuilder 构建,但效果不佳,并且它的一些组件在 SceneBuilder 中表现不佳。

    相关:

    同样,fontawesomefx 的版本为 9.1.2,其中有一个清单,其中包含一个自动模块,其中包含 maven repo 条目,它允许它工作。我不知道该项目的最新文档在哪里,但似乎有多个软件包可供您使用,具体取决于您要访问的字体库,我只是选择了一个使用 fontawesome 图标库的软件包.

    相关:

    JavaFX 8 到 JavaFX 17 的转换方法建议

    我建议:

    1. 通过定义 module-info.java 将您的项目更改为模块化项目。
    2. 使用最新的稳定版 Java 和 JavaFX (17.0.2)
    3. 使用依赖库的最新稳定版本。
    4. 通过构建工具导入库:
      • 除非你真的了解 Gradle,否则我会推荐 Maven。
    5. 在没有任何 VM 选项的情况下运行应用程序以进行导出和打开等。
      • 在您的模块信息中定义模块使用信息。
    6. 确保您的应用在这些条件下正常运行(解决出现的任何问题)。
    7. 然后尝试将相同的库版本和您的 fxml 导入到场景构建器中。

    【讨论】:

    • JFXSpinner,JTextfield 似乎不适用于 Scenebuilder 版本 17。可能还有更多控件也不起作用。
    猜你喜欢
    • 2015-07-15
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多