Java FX:声明性与程序性

nab*_*lex 11 java javafx

我有基于网络的编程(php,jsf,...)的背景和swing和swt的最小背景.

目前我正在寻找一个新的桌面应用程序的java fx 2.x,我想知道有关构建实际GUI的最佳实践.我可以用fxml去声明路线,或者我可以去程序路线.目前对于一些快速原型设计我正在做后者,但我想知道是否有令人信服的理由使用fxml.

UPDATE

最后,我使用FXML路线进行平均大小的项目,即使场景构建器测试版在我的linux系统上仍然有些不稳定,但事实证明它远远优于原始程序原型.到目前为止,最大的优势是很多元素(尤其是hbox,vbox,标签,标签......)不再混乱我的代码,因为它们只存在于fxml中.

jew*_*sea 16

Oracle建议书

请参阅Oracle建议:

  1. 为什么要使用FXML
  2. 实施JavaFX最佳实践

Oracle确实推荐FXML用于Java API上的布局定义.

JavaFX的替代声明技术

JavaFX中的其他声明部分是CSS3D模型

半声明性方法是JavaFX Builder API,但您可能希望避免这种情况,因为在将来的JavaFX版本中将不推荐使用构建器API.

此外,如果您使用其他语言编程,其中一些语言嵌入了用于JavaFX开发的声明性域特定语言(DSL)(例如ScalaFXGroovyFX).

通常,声明性语法的使用主要赢得了大多数UI标记任务的过程编程.这可以通过HTML,CSS,FXML,XAML,MXML,XUL等技术的突出来看出.

低级编程

对于低级别的任务,例如开发一个定制的JavaFX控制,操纵一个JavaFX帆布或处理的图像数据,程序的Java API是最适合,而不是使用声明FXML -没有所述的JavaFX的代码库中的OpenJFX使用FXML.

个人选择和建议

最后,这里没有正确答案.选择由开发人员选择他们最喜欢的方法.

也没有理由不按你认为合适的方式混合两种款式.使用直声明的方式给你留下一个非常严格的UI(如静态HTML页面),相比一些东西,混合程序性和声明式方法(如HTML + JavaScript和AJAX) - 和同样适用于JavaFX的,因为它是对于这种情况下的html开发.

对于小程序,我喜欢在IDE中编写一些代码,编译和运行它,而不必处理基于XML的FXML和Java代码之间的上下文切换.但我发现这种仅限程序的方法很难很好地扩展到大型项目.将视图分成FXML有助于强制关注和模块化的分离.如果没有FXML要求的人为分离,很容易将这些视图和逻辑问题混合在一起.

我不太喜欢XML作为UI布局语言.我认为现已废弃的FXD格式来自过时的JavaFX 1.x分支,远远优于它.但是,FXML是JavaFX 2中最易访和最广泛使用的声明性UI语法.

我将CSS与JavaFX程序一起使用很多,并且喜欢将它与FXML声明代码和Java API程序代码一起使用.在我看来,将样式与代码分开至少与将代码分开布局一样重要.

使用CSS时,最好将样式放在单独的样式表中,而不是在代码中内联样式.

正如另一个答案中所指出的,JavaFX SceneBuilder可视化设计工具目前仅适用于FXML,除了所有其他功能外,这足以让许多人使用FXML来定义他们的JavaFX UI.