Welcome 微信登录

首页 / 软件开发 / JAVA / JavaFX Script高级特性

JavaFX Script高级特性2011-02-12 IBM 成富JavaFX 是 Sun 推出的一套基于 Java 技术的产品家族。 JavaFX Script 可以用来高效的创建富媒体和交互性很强的应用。 JavaFX 是 Adobe Flex 和 Microsoft Silverlight 的有力竞争者。本文通过具体的实例介绍了 JavaFX Script 语言本身的一些高级特性并讨论了 JavaFX Script 中的一些高级话题,包括创建复杂的用户界面、实现动画效果、JavaFX Script 应用的部署和在一个独立的 Java 应用程序中嵌入 JavaFX Script 等。

JavaFX Script 语言简介

JavaFX 是 Sun 推出的一套基于 Java 技术的产品家族,其目的是为从桌面机、移动设备、机顶盒到蓝光光盘等提供一致的用户体验。 JavaFX 目前包含 JavaFX Script 和 JavaFX Mobile 。 JavaFX Script 可以用来高效的创建富媒体和交互性很强的应用。 JavaFX 是 Adobe Flex 和 Microsoft Silverlight 的有力竞争者。本文通过具体的例子介绍了 JavaFX Script 语言本身的一些高级特性。这些特性包括块表达式、范围(Range)表达式、序列的修改、触发器(Trigger)和数据绑定。另外还结合具体的应用,讨论了 JavaFX Script 中的一些高级话题,包括创建复杂的用户界面、实现动画效果、JavaFX Script 应用的部署和在一个独立的 Java 应用程序中嵌入 JavaFX Script 等。

目前 JavaFX Script 语言本身在不断的变化之中,本文中对 JavaFX Script 语法的说明和实例,均基于 JavaFX Script 在 2008 年 7 月 21 号的版本。开发环境采用 NetBeans 6.1,并安装 JavaFX Script 插件。请从 参考资源 中下载相关的工具。

JavaFX Script 高级特性

下面具体介绍 JavaFX Script 语言的一些高级特性。

块表达式

JavaFX Script 中的块表达式是包含在 {} 中的一系列用分号分隔的语句。如果块表达式中的最后一个语句是表达式的话,那么这个块表达式的值就是最后这个表达式的值;否则该块表达式的值是 Void 类型。块表达式适合于那些在代码中只出现一次的计算逻辑。因为只出现一次,可以不用把这样的逻辑封装在一个 function 中。而块表达式又可以把这部分逻辑的代码与其它部分区别开来。在 代码清单 1 中,对于薪水的计算逻辑被封装在一个块表达式中。

清单 1. 块表达式示例

var baseSalary = 10000;
var salary = {
12 * (baseSalary + 1000) + 2 * baseSalary
};
System.out.println(salary);

范围表达式

熟悉其他动态语言,如 Python、Ruby 和 Groovy 的人对于范围(Range)表达式可能并不陌生。 JavaFX Script 也引入了同样的范围表达式,可以用来定义一个序列。不过在使用方式与其他语言有些不同。

在 JavaFX Script 中可以通过 [number1..number2] 来定义一个序列。这里需要注意的是两个边界数字 number1 和 number2 都是包含在序列里面的。如 [0..5] 包含 0,1,2,3,4,5 这六个数字。这点和 Ruby 里面的 number1...number2 和 Groovy 里面的 number1..number2 是一样的。默认情况下,范围中的数字之间的间隔是 1,可以通过在 number2 后面加上显式的 step 来声明间隔。比如 [0..9 step 3] 包含的数字是 0,3,6,9 。

当 number1 大于 number2 的时候,可以通过指定值为负数的 step 来生成降序排列的序列。如 [5..0 step -1] 包含的数字是 5,4,3,2,1,0 ;如果不指定 step,或是 step 的值为正数的话,生成的序列实际上是空的。如 [5..0] 是个空的序列。

序列的修改

JavaFX Script 提供了两个强大的操作符 insert 和 delete 来对序列进行操作。

insert 语句的语法如 代码清单 2 中所示。

清单 2. insert 语句的语法

insert x into seq
insert x before seq[idx]
insert x after seq[idx]

从 代码清单 2 列出的语法中可以看到,insert 语句可以往序列中的指定位置插入新元素。使用 insert x into seq 会把 x 添加到序列末尾。而 insert x before seq[idx] 和 insert x after seq[idx] 则分别可以把新元素插入到 seq[idx] 所对应的元素的前面和后面。