有没有办法在 Scenebuilder/FXML 中从某个 JavaFX 类添加子类?[复制]

Is there a way to add Subclasses from a certain JavaFX Class in Scenebuilder/FXML? [duplicate]

提问人:Marco R. 提问时间:11/15/2023 更新时间:11/15/2023 访问量:41

问:

以下背景:对于我们的项目,我们需要使用 Java 和 JavaFX 实现著名的德国棋盘游戏“卡坦岛定居者”。该板由 19 个六角形瓷砖组成。为了避免对六边形的节点(城市点)和边(街道)进行一些复杂的计算,我想在场景构建器中将板创建为固定的 FXML。 对于六边形,我使用 JavaFX-Polygons。但问题是,我需要 Polygon 类中的更多信息(例如资源类型、节点、边)。

有没有办法创建一个子类(Tile extends Polygon)并在 Scenebuilder 或 FXML 中使用这个类?

我还尝试将多边形铸造为瓷砖,但也没有奏效。

如有必要,我可以稍后提供一些代码。

提前致谢!

我尝试在FXML的开头导入我的类。

<?import package.Tile?

但可悲的是,事情并没有那么简单。

Java JavaFX 场景构建器

评论

0赞 Abra 11/15/2023
Polygon 扩展了具有 getProperties 方法和 getUserData 方法的类,这两种方法都可用于存储额外的信息。也许您可以利用这些方法而不必扩展类?NodePolygon

答:

0赞 David Weber 11/15/2023 #1

看起来您要为 SceneBuilder 创建自定义组件。

步骤 1:创建自定义 vomponent https://docs.oracle.com/javafx/2/fxml_get_started/custom_control.htm

步骤 2:将自定义组件导入 SceneBuilder https://www.google.com/amp/s/staticfinal.blog/2014/05/21/adding-custom-javafx-components-to-scene-builder-2-0/amp/

替代解决方案:

您可以使用纯 Java 创建一个自定义组件,并在控制器中以编程方式将其添加到 fxml 场景中。