Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX:声明性与过程性_Java_Javafx - Fatal编程技术网

JavaFX:声明性与过程性

JavaFX:声明性与过程性,java,javafx,Java,Javafx,我有基于web的编程(php、jsf等)的背景,以及swing和swt的最低背景 目前,我正在寻找JavaFX2.x作为一个新的桌面应用程序,我想知道关于构建实际GUI的最佳实践。我可以使用fxml使用声明性方法,也可以使用过程性方法。目前,对于一些快速原型,我正在做后者,但我想知道是否有令人信服的理由使用fxml 更新 最后,我为一个中等规模的项目选择了FXML路线,尽管scene builder beta版在我的linux系统上仍然有点不稳定,但它已被证明远远优于最初的程序原型。到目前为止,

我有基于web的编程(php、jsf等)的背景,以及swing和swt的最低背景

目前,我正在寻找JavaFX2.x作为一个新的桌面应用程序,我想知道关于构建实际GUI的最佳实践。我可以使用fxml使用声明性方法,也可以使用过程性方法。目前,对于一些快速原型,我正在做后者,但我想知道是否有令人信服的理由使用fxml

更新


最后,我为一个中等规模的项目选择了FXML路线,尽管scene builder beta版在我的linux系统上仍然有点不稳定,但它已被证明远远优于最初的程序原型。到目前为止,最大的优点是许多元素(特别是hbox、vbox、标签、选项卡等)不再使我的代码杂乱无章,因为它们只存在于fxml中。

我使用fxml的原因是它可以由场景生成器生成。我不想手工摆弄布局

如果您要将布局(FXML)与应用程序代码分离,那么您可以要求一些用户体验人员仅使用SceneBuilder来处理布局,而不需要他们使用整个IDE。

Oracle推荐

请参阅Oracle的建议:

  • Oracle确实推荐FXML用于布局定义,而不是JavaAPI

    JavaFX的替代声明性技术

    JavaFX中的其他声明性部分是和

    半声明性方法是最好的,但您可能希望避免这种情况

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

    一般来说,对于大多数UI标记任务,声明性语法的使用主要胜过了过程性编程。这可以从HTML、CSS、FXML、XAML、MXML、XUL等技术的显著性看出

    低级编程

    对于诸如开发自定义JavaFX控件、操作JavaFX画布或处理图像数据等低级任务,过程Java API最适合,而不是使用声明性FXML—没有一个使用FXML

    个人选择和建议

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

    你也没有理由不能按照你认为合适的方式混合这两种风格。与混合了过程性方法和声明性方法(例如html+javascript+ajax)的方法相比,使用直接声明性方法会给您带来非常严格的UI(例如静态html页面),JavaFX也是如此,在本例中,html开发也是如此

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

    我真的不喜欢XML作为UI布局语言。我认为过时的JavaFX1.x分支现在已经失效的FXD格式要优越得多。然而,对于JavaFX2来说,FXML是最容易访问和使用最广泛的声明性UI语法

    我经常在JavaFX程序中使用CSS,并且喜欢在FXML声明性代码和JavaAPI过程性代码中使用CSS。在我看来,将样式和代码分开至少和将布局和代码分开一样重要

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


    正如在另一个答案中指出的,JavaFX SceneBuilder可视化设计工具目前仅适用于FXML,除此之外,这也是许多人使用FXML定义JavaFX UI的充分理由。

    然而,SceneBuilder还不够完整,无法使用它。我们必须回到手中的FXML来了解细节,这是不好的

    在SceneBuilder中,几乎没有带有大而详细的FXML文件的小bug

    Oracle必须为JavaFX运行状况更新SceneBuilder!因为这是非常好看的好工具