当前位置: 首页 > 知识库问答 >
问题:

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

左丘嘉言
2023-03-14

几个星期以来,我一直在想办法解决这个问题,现在我开始放弃了。我肯定做了什么根本错误的事情。不管怎样,这是我的情况。我以前用JavaFX做了一个简单的小程序,但现在发现了Scene Builder,并想用这个工具重新构建它。该项目包括几个经常重用的组件,如下面的组件。它由一个标签、一个滑块、一个文本字段和另一个自定义组件InfoIcon组成。

我已经了解到,在构建我称之为SliderVariable时,要将自定义组件(InfoIcon)作为.jar文件导入到Scene Builder中。这样做效果很好,我可以通过创建一个主方法、一个场景并在这个场景中创建一个SliderVariable来从Eclipse中运行我的SliderVariable的小演示。正如所提到的,这是一个很好的工作。导入或包含InfoIcon并没有达到我想要的效果(我不这么认为),因为这样我就无法轻松地对InfoIcon(或其控制器)进行更改并更新我的SliderVariable,然后在最终产品中看到效果。

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

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

这篇冗长的文章一定很混乱,但我不知道如何使它更清楚。任何类型的回应都将非常感谢,如果你不相信这个论坛是合适的地方发表这样的东西(它可能不是),请指出我的其他地方,我更欢迎。

多谢。

请注意,jar文件位于依赖项中,但也位于引用库中(这里不可见)。这种类型的选择使得场景构建器可以找到并导入InfoIcon,但不能导入SliderVariable。

共有1个答案

东方栋
2023-03-14

导出infoicon时,只需在Eclipse的package explorer(或其他类似的explorer视图)中选择与其相关的包和类,然后选择export。

类似地,当您尝试导出SliderVariable控件时,您需要在InfoIcon中选择的所有内容,以及SliderVariable控件本身所需的其他文件。

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

 类似资料:
  • 我通过扩展现有控件创建了一个新控件,我希望在JavaFX场景中使用这个新控件。我希望能够使用Scene Builder编辑我的场景,但在将新控件添加到FXML文件后,我在打开Scene Builder时遇到。 例如,下面是我创建的一个类,它扩展了: 将此控件添加到FXML文件后... 为什么Scene Builder找不到我的新控件?我需要做什么才能让它找到并能够使用我的新控件? 如果需要,下面是

  • 我的自定义类: 然后尝试添加这个自定义类,如下所示: 我已经尝试搜索这个错误,但没有找到任何解释为什么这不应该工作。我找到的示例表明,应该可以从control类扩展,并将其直接导入到fxml文件中,事实确实如此。当运行程序时,它的工作是完美的,这是场景构建器的问题。 我意识到这是一个Java版本问题,但整个项目设置为Java9(53),我尝试过更改版本,但没有成功。

  • 我使用一个fxml文件和一个Java类实现了一个自定义控件,类似于本官方教程中所解释的内容(参见下面的代码)。请注意,fxml根元素是用定义的,我以编程方式调用。 我尝试在应用程序的FXML布局中包含控件,应用程序加载良好(并按预期显示控件)。 但是,如果我尝试在Scene Builder 2.0中导入包含控件的jar文件,则该控件不会出现在要导入的组件列表中(与同一jar中的其他一些控件不同)。

  • 我现在在Scene Builder中打开了项目,并在anchor窗格中添加了一个controller类,它为我自动完成了该窗格,因为它识别出我有一个controller类,并且看起来正确。 但是,当我返回到我的.fxml文件时,它将我的控制器标签用红色表示为错误,并表示还表示 我该怎么做呢?我完全按照教程... 项目文件结构如下: ProjectX>src>ProjectX(包)>controll

  • 当我在一个舞台上工作时,我注意到我几乎有三次完全相同的东西。而不是那样(因为我讨厌那样),我决定把我有的3次,并把它变成一个自定义组件。 现在我知道我可以在代码中添加它,但我不能预测布局行为(其中两个将直接进入选项卡,第三个将进入网格窗格)。 我不想要的是: 这可能吗?我又从C#和VS2010中出来了,当涉及到自定义控件时,我有点被宠坏了,所以如果有可能让类似的事情发生,有人能告诉我怎么做吗? 是

  • 我希望此图表显示在场景生成器上。怎么可能。。??