详解富客户端平台JavaFX2.0架构与框架
Jeky Jeky 发表于:11年10月11日 16:53 [转载] 51CTO
嵌入式浏览器
JavaFX嵌入式浏览器是JavaFX新的UI组件,它通过API提供了Web显示和访问的全部功能。图1中橙色的部分是基于WebKit的 Web引擎组件(WebKit是一款支持HTML5、CSS、Javascript、Dom和SVG的开源Web浏览器引擎)。它使开发人员可以在他们的 Java应用中实现以下功能:
◆ 渲染本地或远程的HTML内容
◆ 支持历史功能,并提供前进和后退导航
◆ 重新载入内容
◆ 向Web组件增加效果
◆ 编辑HTML内容
◆ 执行JavaScript命令
◆ 处理事件
这个嵌入式浏览器组件包括一下的类:
◆ WebEngine 提供基本的Web页访问功能
◆ WebView 封装了一个WebEngine对象,可将HTML内容放入应用程序场景中,并提供域和方法来应用效果和变换。它是Node类的子类。
你可以阅读Adding HTML Content to JavaFX Applications文档来获取更多的关于JavaFX嵌入式浏览器的细节。
CSS
在JavaFX中CSS提供了对于JavaFX中UI应用定制样式而无需改变代码的能力。CSS可以被异步地应用于任何JavaFX场景中的节点。JavaFX CSS样式也可以在运行期间被简单地赋予场景,并允许动态修改应用程序外观。
图2显示了同一应用程序在两个不同CSS样式下的效果:
图2 CSS样式范例
JavaFX CSS基于W3C CSS ver2.1版本规范与现在正在使用的ver3版本的一部分。JavaFX CSS可以使用任何CSS解析器,甚至那些不支持JavaFX扩展的部分的。这样可以将为JavaFX和为其他目的(如HTML页)所写的CSS混合为一个文件。由于JavaFX具有轻微不同的词法,所有的JavaFX属性名都以“-fx-”开头,包括那些可兼容于标准HTML的CSS。
你可以阅读 Skinning JavaFX Applications with CSS文章来获取更多的信息。
UI控件
JavaFX中UI控件可以通过使用场景中的节点的API来实现。它们从JavaFX平台的丰富的可视化特点中获得优势并在跨平台时有着轻微的不同。JavaFX CSS允许为UI控件定制主题和皮肤。
图3显示了一些现在支持的控件。新的控件,如TitlePane或Accordion,都将在JavaFX 2.0 SDK中被引入。这些控件位于javafx.scene.control包中。
图3 JavaFX UI控件范例
你可以阅读Using JavaFX UI Controls文档和API文档中的javafx.scene.control 包来获取更多的细节信息。
布局
布局容器或窗格可被用于在JavaFX应用程序场景中动态、灵活地管理UI控件。JavaFX布局API包括以下容器类,这些类可以自动进行布局:
◆ BorderPane将其内容节点分布于上、下、左、右、中间位置。
◆ HBox将其内容节点水平布局于一行中
◆ VBox将其内容节点垂直布局于一列中
◆ StackPane将其内容节点以从后到前的顺序布局于一个栈中
◆ GridPane允许开发人员创建灵活行列数目的格子,并在格子中存放内容节点
◆ FlowPane将其内容节点在水平方向或垂直方向上按顺序布局,并以特定宽度和高度的边界进行包裹。
◆ TilePane将其内容节点布局于一致大小的单元中。
◆ AnchorPane允许开发人员在上下左右或者中间创建锚节点。
在JavaFX应用中,想要实现希望的布局效果,可以综合使用不同的容器。
你可以阅读Working with Layouts in JavaFX文献或查看API中的javafx.scene.layout包来获取更多信息。
2D和3D变换
在JavaFX场景中的每个节点都可以使用javafx.scene.transform(原文这里应该是打错了)进行二维坐标变换:
◆ 平移变换(translate):将一个节点从一个地方根据初始位置移动到另一个地方
◆ 拉伸变换(scale):将一个节点根据缩放因子进行缩放
◆ 扭曲变换(shear):将一个节点根据不垂直的x、y轴进行旋转。
◆ 旋转变换(rotate):将一个节点根据场景中的某个点进行旋转
◆ 仿射变换(affine):(若干balabala...看计算机图形学教材吧...)该变换不应被直接使用,而是应该使用Translate、Scale、Rotate、Shear来代替。
你可以阅读Applying Transformations in JavaFX文档或查看API中javafx.scene.transform包来获取更多信息。
视觉效果
在JavaFX场景中使用视觉效果可以提升JavaFX应用的观赏度。JavaFX效果主要是基于图像点的,因此他可以应用于场景中的一组节点,像图像一样渲染节点并对其应用指定效果。
在JavaFX中有一些视觉效果,下面是一部分:
◆ 阴影(Drop Shadow):在给定的内容背后渲染阴影。
◆ 反射(Reflection):在内容的下面渲染反射效果
◆ 光照(Lighting):模拟光源照射在给定的内容上,可以将扁平的对象变得更加真实,3D化。
在Creating Visual Effects文档中有更多的如何使用视觉效果的例子。更多的视觉效果类参见API文档中的javafx.scene.effect包。
部署
JavaFX应用可以通过三种不同的方式被部署于桌面或在浏览器中:
◆ 独立(Standalone):JavaFX应用被安装在本地磁盘中,并通过双击JAR文件来启动。当用户无需进行线上访问或应用没有线上功能时,这种模式是最理想的。
◆ 浏览器(Browser):在这种模式下,JavaFX应用被嵌入一个Web页中并随着Web页被访问而自动启动。它可以跟Web页中JavaScript进行交互。
◆ 网页启动(Web Start):这种模式下,用户下载应用程序并在本地运行。一旦被下载,用户在此之后就可以通过双击JNLP文件来启动应用。
你可以阅读Deploying JavaFX Applications document文档来查看更多关于三种模式和如何准备JavaFX应用部署的信息。
