【发布时间】:2018-06-30 06:31:38
【问题描述】:
【问题讨论】:
标签: java javafx scenebuilder
【问题讨论】:
标签: java javafx scenebuilder
我很想知道您为什么要使用 2013 年推出的 Scene Builder 1.1。我猜是因为您必须使用 JDK 7 维护一些遗留的 JavaFX 代码?
我猜你也知道 Scene Builder 的当前版本可以在 here 找到,它支持 JDK 8 和 JDK 10。
无论如何,回到您的问题,坏消息是 Scene Builder 1.1 没有用于管理 jar/fxml 文件的菜单。您可以在此issue 中找到更多相关信息:
现在 SB 2.0 预览版中提供了此功能
好消息是它对第三方组件有某种基本支持。您可以通过两种方式启用第三方组件:
如果您的 fxml 文件包含类路径中不可用的某些导入,SB 将显示一个对话框,允许您将所需的 jar 添加到类路径中。
可以通过将 jar 直接添加到 app 文件夹并编辑 cfg 文件以包含它来完成更持久的解决方案(对于每个 fxml,没有此对话框)。
我不得不在我当时的旧文件之间进行搜索,以找到一些有效的用例来测试这一点。我们可以使用 2.2 版中的 JFXtras jar ('org.jfxtras:jfxtras-labs:2.2-r5'),可以从 here 下载。
您可以使用其中一个控件创建一个 fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import jfxtras.labs.scene.control.*?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
<children>
<BigDecimalField layoutX="160.0" layoutY="132.0" />
</children>
</AnchorPane>
现在,如果您尝试使用 SB 1.1 打开此 fxml,您将看到以下对话框:
您可以在此处指定您的 jar(s):
你必须点击Apply然后你才能打开你的fxml:
现在,如果您检查 fxml 文件,您会注意到将包含类路径:
<?import jfxtras.labs.scene.control.*?>
<?scenebuilder-classpath-element C:/tmp/jfxtras-labs-2.2-r5.jar?>
这仅适用于该文件。请注意scenebuilder-classpath-element 标记是removed 与SB 2.0。
如果你想要一个更持久的解决方案,你可以直接将jar添加到app文件夹中(可能你会在C:\Program Files (x86)\Oracle\JavaFX Scene Builder 1.1\app下找到它)。
你必须编辑package.cfg文件来添加这个:
app.classpath=scenebuilder.jar;jfxtras-labs-2.2-r5.jar
保存并启动 SB 1.1。现在您将能够直接打开 fxml 文件或任何其他需要该第三方 jar 的文件。
【讨论】: