详解富客户端平台JavaFX2.0架构与框架

Jeky Jeky 发表于:11年10月11日 16:53 [转载] 51CTO

  • 分享:
[导读]JavaFX 2.0平台是基于Java技术的富客户端平台。它使应用程序开发者更加容易的开发和部署跨平台的富互联网应用(RIA)。JavaFX 2.0文档包含了JavaFX 2.0所提供的功能的概述。

嵌入式浏览器

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样式下的效果:

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包中。

JavaFX UI控件范例

图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应用部署的信息。

[责任编辑:黄辉]
大黄
以备份起家的CommVault近两年的解决方案不断向更全面的数据保护转型,并对数据管理、数据挖掘也有了一些关注。CommVault中国区技术总监蔡报永接受采访时表示CommVault将继续做一家专注做数据管理和信息管理的软件厂商。
官方微信
weixin
精彩专题更多
存储风云榜”是由DOIT传媒主办的年度大型活动。回顾2014年,存储作为IT系统架构中最基础的元素,已经成为了推动信息产业发展的核心动力,存储产业的发展迈向成熟,数据经济的概念顺势而为的提出。
华为OceanStor V3系列存储系统是面向企业级应用的新一代统一存储产品。在功能、性能、效率、可靠性和易用性上都达到业界领先水平,很好的满足了大型数据库OLTP/OLAP、文件共享、云计算等各种应用下的数据存储需求。
联想携ThinkServer+System+七大行业解决方案惊艳第十六届高交会
 

公司简介 | 媒体优势 | 广告服务 | 客户寄语 | DOIT历程 | 诚聘英才 | 联系我们 | 会员注册 | 订阅中心

Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技术有限公司 版权所有.