场景生成器 - 自定义控件重用

时间:2018-04-26 22:41:32

标签: javafx dependencies custom-controls fxml scenebuilder

我已经解决了这个问题,试图找到几周的解决方法,我开始放弃了。我必须做一些根本错误的事情。无论如何,这是我的情况。我之前使用JavaFX创建了一个简洁的小程序,但现在已经发现了Scene Builder并希望使用此工具再次构建它。该项目包括经常重复使用的几个组件,如下所示。它由标签,滑块,文本字段和另一个自定义组件InfoIcon组成。

enter image description here

我已经明白完成的事情是在构建我的SliderVariable时将自定义组件(InfoIcon)作为.jar文件导入到Scene Builder中。这很好用,我可以通过创建一个main方法,一个场景并在这个场景中制作一个SliderVariable,从Eclipse中运行我的SliderVariable的小型演示。如上所述,这很有效。导入或包含InfoIcon并不能满足我的需求(我不这么认为),因为我无法轻易地对InfoIcon(或其控制器)进行更改并更新我的SliderVariable,然后在最终产品中查看效果。 / p>

当我想更进一步,然后在Scene Builder中使用我的SliderVariable时出现问题。我和InfoIcon一样。我将我的滑块变量导出到一个不可执行的jar,然后将其导入到Scene Builder中。在这里,Scene Builder抱怨它找不到任何UI组件,因此无法导入它。我发现这是因为当我将SliderVariable导出为jar时,它不会打包它的依赖项,这意味着InfoIcon没有与它捆绑在一起,并且编译器在我尝试使用它时找不到该组件。 / p>

我试图用FatJar来解决这个问题,而我却无法解决这个问题(似乎它已经不再使用了)。我尝试过Maven,我无法在SliderVariable的FXML中导入InfoIcon的Maven项目依赖项。最后我还试着简单地不导入jar,而是将InfoIcon的源代码包含在SliderVariable的单独包中,但是我无法将其导入到我的FXML中。我很绝望。如果人们想在Scene Builder中使用自己的控制器重用自定义组件,通常会做什么?这甚至完成了吗?我应该放弃:'(?

这个笨拙的帖子必须高度混乱,但我不知道如何让它更清晰。任何形式的回应都将非常感激,如果你不相信这个论坛是发布这样的东西的正确的地方(它可能不是这样),请指出我更受欢迎的其他地方。

非常感谢。

编辑1:我现在在我的项目中添加了一个名为Dependencies的文件夹。在这里,我把我的InfoIcon.jar复制(不是引用)。

enter image description here

然后我将此.jar文件添加到我的构建路径并删除旧文件。然后我进入SceneBuilder并重新导入InfoIcon jar,但这次是我刚刚创建的Dependencies文件夹。在这一点上,我所做的小项目测试仍然运行良好。然后我使用以下设置导出为JAR文件并点击完成。

enter image description here

然后我尝试将其导入到Scene Builder中,并且Scene Builder告诉我它找不到任何UI组件。

编辑2:我应该选择这些项目吗?

enter image description here

请注意,jar文件位于Dependencies中,但也位于Referenced Libraries中(此处不可见)。这种类型的选择使得Scene Builder可以找到并导入InfoIcon而不是SliderVariable。

1 个答案:

答案 0 :(得分:0)

导出array_values时,只需在Eclipse的软件包资源管理器(或其他类似的资源管理器视图)中选择与其相关的软件包和类,然后选择导出。

同样,当您尝试导出InfoIcon控件时,您需要在SliderVariable控件本身所需的其他文件之上选择您在InfoIcon中选择的所有内容。 / p>

如果将SliderVariable作为JAR文件导入InfoIcon项目,则需要在导出SliderVariable期间手动选择该JAR文件。