甲骨文建议
参阅Oracle建议:
- Why use FXML
- Implementing JavaFX Best Practices
甲骨文不推荐布局定义FXML过的Java API。
备用陈述技术为JavaFX
其他声明条的JavaFX是CSS和3D models
一个半声明的方法是JavaFX Builder API,但你可能想避免,作为the builder api will be deprecated in future JavaFX versions。
此外,如果您使用其他语言编程,其中一些嵌入了JavaFX开发的声明性域特定语言(DSL)(例如ScalaFX或GroovyFX)。
通常,声明性语法的使用主要赢得了大多数UI标记任务的程序性编程。这通过技术,如HTML,CSS,FXML,XAML,MXML,XUL的突出可以看出,等
低级编程
对于低级别的任务,例如开发一个自定义的JavaFX控制,操作JavaFX画布或处理图像数据时,程序化Java API最适合使用声明式FXML,而不是JavaFX codebase in openjfx都使用FXML。
个人选择和咨询
最后,这里没有正确的答案。这个选择留给开发者选择他们最喜欢的方法。
你也没有理由不能混合你认为合适的两种风格。与使用过程式和声明式方法(例如html + javascript + ajax)的东西相比,使用直接声明式方法会留下非常严格的UI(例如静态html页面) - 对于JavaFX也是如此在这种情况下为html开发。
对于小程序,我喜欢在IDE中编写一些代码,编译并运行它,而不必处理基于XML的FXML和Java代码之间的上下文切换。但是我发现这种只采用程序的方法并不能很好地适应大型项目。将视图分为FXML有助于实现关注点和模块化的分离。如果没有FXML所要求的人为分离,将这些观点和逻辑关注点混合起来是非常容易的。
我不太喜欢XML作为UI布局语言。我认为现在已经过时的JavaFX 1.x分支的FXD格式非常优秀。但是,FXML是JavaFX 2中最容易访问和广泛使用的声明性UI语法。
我在JavaFX程序中使用了很多CSS,并且喜欢在FXML声明性代码和Java API过程代码中使用它。在我看来,将代码与样式分离至少同样重要,因为它将代码与布局分开。
使用CSS时,最好将样式放在单独的样式表中,而不是在代码中内联样式。
正如另一个答案中指出的那样,JavaFX SceneBuilder可视化设计工具目前仅适用于FXML,除此之外,许多人都有理由使用FXML来定义他们的JavaFX UI。