javafx教程(转)
上一篇 / 下一篇 2009-06-09 17:28:37 / 个人分类:java fx
JavaFX教程 ************文中的例子是以Netbean6.1来演示的,还有你必须在Netbeas中安装JavaFX SDK 。 Chapter 1:数据类型 1.1 基本类型 JavaFX语言提供四种基本类型:String(字符串)、Boolean(布尔)、Number(数值)和Integer(整数)。这些类型相当于Java 的如下类型: JavaFX Java String java.lang.String Boolean java.lang.Boolean Number java.lang.Number Interger byte,short,int,long,BigInteger Example: var s:String="Hello" ; s.toUpperCase(); // "HELLO" s.substring(1) ; // "ello" 同时还要说明一点,JavaFX的字符串可以用双引号,也可以用单引号。 var s = 'Hello'; 与 var s= "Hello"; 是等价的。 ------------------------------------------------------------------------------------------------------------------------- 注意:JavaFX中字符串的连接与java不同,JavaFX不支持+连接字符串。连接方式如下: 方法一: var s:String ="Hello"; var s1="{s} World"; 方法二: JavaFX提供了concat()方法连接两个字符串 var s1= "Hello".concat(" World"); ----------------------------------------------------------------------------------------------------------------------- var n:Number=12.5 ; n.intValue(); // 12 (12.5).intValue(); // 12 var b:Boolean = true; b intstanceof Boolean; // true 下面我们用个Demo 来体验一下这些基本类型的使用吧! 在Netbeans 6.1中文件->新建项目->样例->JavaFX 展开节点 在Best Practice中任选一个例子。我这里是选的是transform中的Rotate。在源包的transform中打开Rotate.fx文件。可以看到下面这样的代码。 package transform; import javafx.gui.*; import javafx.animation.*; import java.lang.Math; import java.util.Random; var angle : Number = 0.0; var jitter : Number = 0.0; var random : Random = new Random(); var ticker : Timeline = Timeline { repeatCount: Timeline.INDEFINITE keyFrames : KeyFrame. { time : 20ms action : function(): Void { angle += jitter; } } }; var jitterTimeline : Timeline = Timeline { repeatCount: Timeline.INDEFINITE keyFrames : KeyFrame. { time : 1s action : function(): Void { jitter = random.nextDouble() * 12 - 6; } } }; Frame. { content : Canvas { background : Color.GRAY content : Rectangle { transform. [ javafx.gui.Rotate { angle : bind angle, x : 100, y : 100 }, javafx.gui.Translate { x : 43, y : 43 } ] width : 114, height : 114 fill : Color.WHITE } } visible : true title : "Rotate" width : 200 height : 232 closeAction : function() { java.lang.System.exit( 0 ); } } ticker.start(); jitterTimeline.start(); 可以先运行一下看看是什么样的东西。 好了,我们可以看到一个以Rotate为标题的窗体里有一个白色的正方形在转动。 接下来我们就在这个程序代码中作一点添加和修改,来体验一下我们上面讲到的基本类型的用法。 首先在var jitter : Number = 0.0;后面加上 var s : String = "Hello";这一句,然后装下面的 title :"Rotate" 换成 title :s 。运行一下,可以看到窗体的标题变成了“Hello”,接着把s 换成 s.toUpperCase() 可以看到标题变成“HELLO”。同样s.substing(1) 标题变成 “ello”。 下面来试一下Number 类型。 同样在var s : String = "Hello";下面加上var n : Number = 12.5; 然后我会找到下面这段代码: var jitterTimeline : Timeline = Timeline { repeatCount: Timeline.INDEFINITE keyFrames : KeyFrame. { time : 1s action : function(): Void { jitter = random.nextDouble() * 12 - 6; } } }; 装里的那个12换成n.intValue()或(12.5).intValue()可以看到效果和前面的一样。 同样你可以通过你自己申明的类型来替换里的变量来体会一下吧。 ---------------------------------------------------------------------------------------------------------------------- 1.2 数组 在JavaFX中最常用的数据结构就是数组,它在JavaFX中通过方括弧和逗号来声明: 如: var week_days=["Mon","Tue","Wen","Thu","Fri"]; 数组代表了一组顺序的对象.JavaFX中的数组本身不是对象,而且不能嵌套.创建嵌套数组 的表达式如下: var days = [week_days,["Sat","Sun"]]; 会被自动扁平化,例如: days==["Mon","Tue","Wen","Thu","Fri","Sat","Sun"];//return true 数组的大小可以通过JavaFX的sizeof操作符确定: var n = sizeof days;//n = 7 对于数组成员形成数列(arithmetic series )的数组,JavaFX提供了一种简写符号:".."。 下面提供了定义阶乘和奇数求和函数的示例,其中“result”的数值是1至100中的奇数 的和: function fac(n) {return product([1..n]);} var result = sum([1,3..100]); 数组中的所有元素必须是同一种类型。 数组可以像在Java中那样通过索引访问: var wendesday = days[2]; JavaFX中的[]操作符还可以用来表示选择(类似XPath的用法)。在这种情况下,[]中包含的 表达式应是一个布尔表达式。此表达式可以返回一个新的数组,此数组中只包含满足[] 中断言(prddicate)的成员。 在[]操作符包含的断言中通过操作符访问上下文对象。例如: var nums = [1,2,3,4]; var numsGreaterThanTwo = nums[.>2];// [3,4] 另一种方法,也可以将变量声明为上下方对象。例如,这种方式与上面的方式等价: numsGreaterThanTwo = nums[n|n>2]; JavaFX中的indexof操作符返回对象在数组中的顺序位置。 下面list的car和cdr可以用选择表达式来表示: function car(list) {return list[indexof .==0];} function cdr(list) {return list[indexof .>0];} 当然,car可以用更简单、高效的方式表示: function car(list) {return list[0];} Example: var list = [1..10]; car(list);// 1 cdr(list);// [2,3,4,5,6,7,8,9,10] JavaFX中的空数组[]与null等价,Example: [] ==null;//true sizeof null // 0 ------------------------------------------------------------------------------------------------------------------------------------------- 1.2-2 数组的插入 除了赋值操作“=”之外,JavaFX 还提供数据修改操作符“insert ” 和 ”delete“。 具体的方法如下: insert语句 可以用下面方式中的任意一种进行声明: insert Expression1 [as first | as last] into Expression2 insert Expression1 before Expression2 insert Expression1 after Expression2 insert语句将表达式1求值后的返回结果插入到下面表达式中所描述的位置: into 表达式2必须指向一个属性或者变量。如果表达式2指向一个单值属性,那么插入的效果等同于赋值操作。 如果指定了as first,那么插入位置就在表达式2所表示的列表的第一个元素的前面。如果指定了as last,那么插入位置就在表达式2所表示的列表的最后一个元素的后面。如果没有明确地指定as first或者as last,则默认为as last。 Example: var x=[1,2,3]; insert 10 after x[.== 10]; //yields [1,2,3,10] insert 12 before x[1]; //yields [1,12,2,3,10] insert 13 after x[.==2]; // yields [1,12,2,13,3] delete语句 delete语句可以使用下面形式中的一种: delete variable delete variable[predicate] delete variable[predicate] delete Expression.attribute[predicate] 前两种形式将删除变量或者属性中的所有元素,它们等价于将变量或者属性赋值为[]或者null,后两种形式仅删除满足断言的元素。 Example: var x = [1,2,3]; insert 10 after x[.== 10]; //yields [1,2,3,10] insert 12 before x[1]; //yields [1,12,2,3,10] delete x[.== 12]; //yields [1,2,3,10] delete x[.>= 3]; //yields [1,2] insert 5 after x[.== 1]; //yields [1,5,2] insert 13 after first into x; //yields [13,1,5,2] delete x; //yields [] |
TAG:
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | ||||||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
26 | 27 | 28 | 29 | 30 | 31 |
我的存档
数据统计
- 访问量: 58068
- 日志数: 89
- 建立时间: 2008-12-13
- 更新时间: 2010-01-13