DOC-06-01 为何使用FXML

本章提供了FXML的基本描述,并且说明了使用它来创建用户界面的好处。

FXML是一种基于XML的语言,提供了将构建用户界面和应用程序逻辑代码分离的结构。这种对表现和应用逻辑的分离对Web开发者来说非常有吸引力,因为他们可以使用Java组件来构建一个用户界面但不需要掌握那些获取和填充数据的代码。

下面的部分提供了关于FXML的更多信息,或许当你在创建用户界面时会优先选择FXML来替代其他方法:

● FXM简介

● FXML的简单样例

● 使用FXML的好处

● FXML与Scene Builder

FXML简介

FXML并没有定义schema,但是它具有一个基本的预定义结构。你在FXML中所表达的内容,以及如何将其应用到构建一个场景图(Scene Graph),这些都取决于你所构造的API。由于FXML直接映射为Java代码,所以可以通过Java API文档来理解对应的XML元素和属性的含义。一般来说,大多数的JavaFX类都可以映射为XML元素,并且大多数的Bean属性都会被映射为元素的属性。

从MVC设计模式的角度来看,FXML文件描述的用户界面是其中的View的部分。Controller是一个Java类,可以选择实现Initializable接口,用于将其声明为FXML文件的控制器(Controller)。Model部分包括了领域模型对象,使用Java代码来定义并通过Controller来与View关联。这样的结构在后面的章节“使用FXML来创建地址簿应用”中会给出样例。

当你使用FXML来创建用户界面,尤其是在创建具有大型、复杂的场景图、表单、数据入口、复杂动画的用户界面时使用FXML会显得更为功能强大。FXML同样适于创建静态布局,例如表单、控件、表格等。另外,你也可以通过FXML使用脚本来构建动态布局。

FXML的简单样例

要展现使用FXML的优点,最好的方法是使用一个例子。如图1-1所示,它展现了一个用户界面,其中包括一个BorderPane布局,在其top和center区域各包含了一个文本标签。

图1-1 BorderPane的简单样例

6_1_1 borderpane_simple_example

首先来看看是如何直接使用源代码来构建用户界面的,如例1-1所示:

例1-1 用户界面的Java代码

然后来看看例1-2,它也构建了同样的UI,但是是使用的FXML标记。从其中可以看出界面的层级结构,这使得在界面之上增加组件变得更为方便。

例1-2 用户界面的FXML标记

使用FXML的好处

除了给Web开发者一个更为熟悉的UI开发方式之外,使用FXML还会得到如下好处:

● 由于在FXML中场景图的结构更为清晰明了,这使得开发组能更为方便地创建和维护一个可测试的用户界面。

● FXML不是一种编译型语言;你不需要重新编译代码就可以看到用户界面的改变。

● FXML的内容在文件被读取时可以被本地化,例如,如果一个FXML文件在加载时使用en_US的本地化配置(Locale),则基于下面的资源字符串它会产生字符串“First Name”显示到Lable上:

而如果将Locale改为使用fx_FR并且重新加载FXML,则Lable会显示“Prénom”。

如果使用Java代码则没有这样方便,因为你必须手工更新你的用户界面中的每一个元素的内容,你需要持有指向每个元素的引用并且调用适当的setter方法(例如setText())。

● 可以在任何基于JVM的语言中使用FXML,例如Java、Scala或Clojure

● FXML不仅仅可用于构建MVC中的View的部分。你也可以用它来构建服务、任务或领域对象,并且你可以在FXML中使用JavaScript或其它脚本语言。要了解关于使用JavaScript的例子,请参考在《01开始学习JavaFX》教程中的“使用脚本语言来处理事件”章节(译者注:第二部分、第6章)。

FXML与SceneBuilder

可能有的开发人员喜欢直接编写XML,而另外一些开发人员则可能更喜欢使用工具来管理XML。这两种方式对FXML来说都是可以的。

如果你更喜欢工具,或者你希望创建一个用于获取用户反馈的快速原型,你可能更喜欢JavaFX Scene Builder。Scene Builder是一个设计工具,它可以在你定义应用程序的用户界面时产生FXML源码。它可以帮助你快速创建一个交互式应用程序的原型,将各个组件关联到应用程序逻辑之上。要了解更多的信息,请参考文档《开始使用JavaFX Scene Builder(Getting Started with JavaFX Scene Builder)》。

由于Scene Builder使用XML作为序列化格式,所以其产生的XML代码非常清晰,你也可以通过任何其他文本编辑器或XML编辑器来对FXML文件进行修改。

只要你安装了JavaFX Scene Builder,NetBeans IDE 7.4之后的版本允许你在JavaFX Scene Builder中打开FXML文件。NetBeans与Scene Builder的这种无缝集成在开发FXML应用程序时提供了更多的好处。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/08/fxml_why/
百度已收录