当前位置: 首页 > 面试题库 >

Java FX:声明式与过程式

居京
2023-03-14
问题内容

我有基于Web的编程(php,jsf等)的背景,并且带有swing和swt的背景很少。

目前,我正在寻找用于新桌面应用程序的java fx
2.x,并且我想了解有关构建实际GUI的最佳实践。我可以使用fxml进行声明式路由,也可以采用过程式路由。目前,为了进行快速原型制作,我正在使用后者,但我想知道是否有令人信服的理由使用fxml。

更新

最后,我为一个中等规模的项目使用了FXML路线,即使场景生成器beta在我的linux系统上仍然有些不稳定,但事实证明它远远优于原始的过程原型。到目前为止,最大的优点是许多元素(尤其是hbox,vbox,标签,标签等)不再使我的代码混乱,因为它们仅存在于fxml中。


问题答案:

Oracle建议

请参阅Oracle建议:

  1. 为什么要使用FXML
  2. 实施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的充分理由。



 类似资料:
  • 函数是JavaScript中的一等对象,这意味着可以把函数像其它值一样传递。 一个常见的用法是把匿名函数作为回调函数传递到异步函数中。 函数声明 function foo() {} 上面的方法会在执行前被 解析(hoisted),因此它存在于当前上下文的任意一个地方, 即使在函数定义体的上面被调用也是对的。 foo(); // 正常运行,因为foo在代码运行前已经被创建 function foo

  • 声明式安全是指以在应用外部的形式表达应用的安全模型需求,包括角色、访问控制和认证需求。部署描述符是web应用中的声明式安全的主要手段。 部署人员映射应用的逻辑安全需求到特定于运行时环境的安全策略的表示。在运行时,servlet 容器使用安全策略表示来实施认证和授权。 安全模型适用于 web 应用的静态内容部分和客户端请求到的应用内的servlet 和过滤器。安全模型不适用于当 servlet 使用

  • 见 映射类继承层次结构 对于这个部分。

  • 本文向大家介绍JavaScript函数式编程(Functional Programming)声明式与命令式实例分析,包括了JavaScript函数式编程(Functional Programming)声明式与命令式实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript函数式编程(Functional Programming)声明式与命令式。分享给大家供大家参考,具体如

  • 我试图将我的编程风格从命令式切换到声明式,但有一些概念困扰着我,比如当涉及到循环时的性能。例如,我有一个原始数据,在操作它之后,我希望得到3个预期结果:itemsHash、namesHash、rangeItemsHash 为了达到预期的结果,命令式只循环一次,而声明式至少循环3次(、、)。哪一个比较好?在性能上有什么权衡吗?

  • 问题内容: 我了解“隐式声明”通常意味着必须在调用函数之前将其置于程序的顶部,否则我需要声明原型。 但是,应该在文件中(该文件已包含在内)。 有没有什么办法解决这一问题? 问题答案: 没错,如果您包含适当的标头,则不应收到隐式声明警告。 然而,该功能已被 删除 ,从C11的标准。这意味着in中不再有原型。 曾经 在。 删除的原因是众所周知的:它不能防止缓冲区溢出。因此,您永远不应使用,而应改用尾随