Oracle建议
请参阅Oracle建议:
- 为什么要使用FXML
- 实施JavaFX最佳实践
Oracle确实建议使用FXML通过Java API进行布局定义。
JavaFX的替代声明性技术
JavaFX中的其他声明性部分是CSS和3D模型
半声明性方法是JavaFX Builder API,但您可能要避免这种情况,因为在将来的JavaFX版本中将不赞成使用builder
api。
另外,如果您使用其他语言编程,则其中一些语言将嵌入声明性的领域特定语言(DSL)用于JavaFX开发(例如ScalaFX或GroovyFX)。
通常,对于大多数UI标记任务,声明性语法的使用主要胜过过程编程。HTML,CSS,FXML,XAML,MXML,XUL等技术的突出表现可以看出这一点。
低级编程
对于开发自定义JavaFX控件,处理JavaFX画布或处理图像数据等低级任务,过程Java API最适合而不是使用声明性FXML-
openjfx中的JavaFX代码库均不使用FXML。
个人选择和建议
最后,这里没有正确的答案。选择权留给开发人员选择他们最喜欢的方法。
也没有理由不能将两种样式混合在一起。与混合了过程式和声明式方法(例如html + javascript +
ajax)的东西相比,使用直接的声明式方法给您留下了非常僵化的UI(例如静态html页面)-JavaFX也是一样在这种情况下用于html开发。
对于小型程序,我只喜欢在IDE中编写一些代码,进行编译和运行,而不必处理基于XML的FXML和Java代码之间的上下文切换。但是我发现,这种仅用于过程的方法很难轻松地扩展到较大的项目。将视图分为FXML有助于加强关注点和模块化的分离。没有FXML要求的人为分离,将这些视图和逻辑问题混合在一起太容易了。
我不太喜欢XML作为UI布局语言。我认为从过时的JavaFX 1.x分支中已失效的FXD格式要优越得多。但是,FXML是JavaFX
2最易于访问且使用最广泛的声明式UI语法。
我经常将CSS与JavaFX程序一起使用,并且喜欢将其与FXML声明性代码和Java
API程序代码一起使用。我认为,将样式与代码分离至少与将布局与代码分离同等重要。
使用CSS时,最好始终将样式放在单独的样式表中,而不是将样式内联到代码中。
正如另一个答案中指出的那样,JavaFX
SceneBuilder视觉设计工具当前仅与FXML一起使用,并且除其他所有因素外,这就是许多人使用FXML定义其JavaFX UI的充分理由。



