我们应该在JavaFX自定义控件中使用FXML吗?

这似乎有点问,我认为使用FXML编写我们的自定义组件显然是正确的方法.

但正如我们从ControlsFX,JFXextras甚至“掌握JavaFX8控件”这本书中看到的那样,不要在自定义控件中使用或提及使用FXML.

尽管如此,官方文档说要继续这条路线,并通过FXML创建JavaFX控件.

什么是更正确的方式和原因?

最佳答案
JavaFX中有两种自定义控件:

> fx:root based custom controls:这些自定义控件是可定制的(支持CSS),但不可换肤.

如果您是应用程序开发人员,那么这就是您最想要使用的内容
的时间.

这种控制通常是应用程序或组织特定的.不需要为这些控件提供额外的自定义皮肤,CSS就足够了.

通常他们只是将一些控件组合在一起并提供更好的API并隐藏内部.

它们比可换肤的自定义控件更容易编写.

我认为这是Swing-world中JPanel子类的替代品.

我建议将你的GUI细分为小
自包含的fx:基于根的控件(高内聚,低耦合).使用
中介模式组合这些控件(父控件
管理/配置其子控件并监听事件
它的孩子控制.子控件彼此不了解).

您可以创建此类控件的整个层次结构.打破他们
进入小型控件将使维护更容易(例如,如果布局或
用户交互必须改变).
> skinnable自定义控件:skinnable自定义控件不仅可以设置样式(通过CSS),而且可以通过提供自定义外观完全更改其外观.

如果您是控件库开发人员,那么很可能您希望提供可换肤的自定义控件,以允许库的用户充分利用JavaFX.

这种控件通常是非常基本的,高度可重复使用的控件,并且通常(但不总是)使用一些自定义绘画.

他们比fx更难做到:基于root的自定义控件.

转载注明原文:我们应该在JavaFX自定义控件中使用FXML吗? - 代码日志