Just Java IT

西门町学士关于Java的随便一说而已……

走进JavaFX-(2)

/**
* 继续俺的JavaFX学习,语法部分
* 文:西门町学士
* 位置:http://www.blogjava.net/stevech/
*/
我犹豫了好一阵才决定写JavaFX的语法部分。个人认为这是学习中最枯燥的部分。因为JavaFX的语法非常简单且直观,比如Sun提供的在线 Tutorial的GUI部分,即使你是第一次听说JavaFX这个东西,只要你稍有一点点编程经验,你也基本上能够毫无障碍地理解这个Tutorial 的内容了。
话虽如此,部分语法可能确实会造成一些理解困难,比如有的地方分隔符用逗号(,)分号(;)和空格都可以,def和var的区别,=>操作符,等等这些还得初看一遍语法才能理解(当然,基本上就没有必要看第二遍了吧)。因此,我也在此将JavaFX的语法照着Sun的语法 Tutorial快速地过一遍,为以后打下一个坚实(!)的基础,呵呵。

def: 定义常量
var: 定义变量

function {}: 定义函数
function fun(arg: Integer) {}: 一个名为fun需一个Integer参数类型的函数,没有返回值,等同于
function fun(arg: Integer) : Void {}
如果是
function fun(arg: Integer) : Integer {} 则是返回Integer类型

Person {
  firstName: "java"; //在这里用;、,或是什么都不用皆可
  lastName: "sun",
  gender: "x"
  age: "12"
}
定义了一个Person对象实例。
对象可以嵌套,如
Person {
  firstName: "java"; //在这里用;、,或是什么都不用皆可
  lastName: "sun",
  gender: "x"
  age: "12"
  email: Email {
    url: "java@sun.com"
  }
}

String类型
def name = 'Sun'; //单引号双引号都一样
var s = "Hello {name}"; // Hello Sun。{}代表内嵌表达式

Boolean类型
var answer = true;

Number和Integer类型
Number表示浮点数:def numOne = 1.0;
Integer表示整数:def numTwo = 1;
不嫌麻烦的话(吃多了撑得慌):
def numOne : Number = 1.0;
def numTwo : Integer = 1;

Duration类型
以前没见过。其实就是时间间隔。
5ms;// 5毫秒
10s;// 10秒
15m;// 15分钟
20h;// 20个钟头

Void
知道吧。仅用于函数返回值(不用也是一样的)记住V是大写的

null
这个更没问题了吧。这年头就指望着null吃饭呢

Sequence
[]。类似于数组更类似于list
var seasons = ["Spring","Summer","Fall","Winter"];
可嵌套
var ss = [seasons, ["Moon","Beauty"]];
对于数字更有:
var nums = [1..100];//两个点,别弄成三个了
var nums = [1..10 step 2];//1,3,5,7,9
var nums = [10..1 step -1];
还有:
var nums = [1,2,3,4,5];
var numsGreaterThanTwo = nums[n | n > 2];
访问:
nums[0]等等等等,别忘了下标从0计
sizeof: 个数
插入:
var days = ["Mon"];
insert "Tue" into days; //哇,SQL冒出来了啊
insert "Fri" into days;
insert "Sat" into days;
insert "Sun" into days;
insert "Thu" before days[2];//将Thu放在days[2]之前
insert "Wed" after days[1];//将Web放在days[1]之后
删除:
delete "Sun" from days;
delete days[0];
delete days;//现在days是空的了,但days这个变量还是存在的
反转:
var nums = [1..5];
reverse nums;//变成5,4,3,2,1
比较:
==
元素和位置完全相同,true;否则false
子集:
var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
var weekend = days[5..6];//Sat和Sun
var weekdays = days[0..<5];//类似于数学上的[)半闭半开范围
var weekend = days[5..];//到头
var days2 = days[0..<];//除了最后一个

操作符部分
=、+、-、*、/、mod、+=、-=、*=、/=、++、--、not
==、!=、>、>=、<、<=
and、or
instanceof
唯一需要注意的是String没有重载+,因此不能用+来连接String,得用函数。

表达式
以;结尾。

if ..else if...else
可以这么用:
price = if (age < 5) 0 else if (age > 5 and age < 12) 5 else 10;

for...in
var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
for (day in days) {}
也可以:var squares = for (i in [1..10]) i*i;

while、break、continue

throw、try...catch...finally

数据绑定:bind和bound

var x = 0;
def y = bind x;//现在y的值随x变动而变动。注意我们用def来定义y

var x = 1.0;
bound function fun(arg: Type) : Type {
  something relating to x;
}//定义了一个可以绑定外部参数的函数

触发器(replace trigger)//SQL再现?
on replace

var password = "foo" on replace oldValue {
     println("\nALERT! Password has changed!");
     println("Old Value: {oldValue}");
     println("New Value: {password}");
};
password = "bar";
当值改变时触发!

自定义类型
终于,终于!class出现!

class Person {
  var firstName: String;
  var lastName: String;
  var gender: String;
  var age: Integer;

  function printName() {
    println("Name: {firstName} {lastName}");
  }
}

子类
abstract class X {
  ...
  function doSth(...) {}
  ...
}
class XX extends X {
  ...
  override function doSth(...) {}
  ...
}

包:package
跟Java没区别~~

访问修饰符
默认(即没有修饰符):跟Java不同,称为Script-only,也就是只有当前这个文档内的可以访问它,类似于private(跟C++的默认方式相同)
package:在同一个包内可以访问
protected:同一个包或子类
public: 公共
public-read:把public限制了一下,不允许外部进行写操作。还可以再加修饰符来将写操作放宽,比如package public-read或protected public-read
public-init:可由外部进行初始化赋值,然后就跟public-read一样了。

posted on 2008-12-16 01:05 西门町学士 阅读(1716) 评论(4)  编辑  收藏 所属分类: Java

Feedback

# re: 走进JavaFX-(2)[未登录] 2008-12-16 08:46 老紫竹

你这家伙,跑这面多久了?  回复  更多评论   

# re: 走进JavaFX-(2) 2008-12-16 15:10 西门町学士

@老紫竹
呵呵,紫竹老兄,有段时间csdn的blog服务有问题(好像是05、06年的时候吧,对FF支持差),我就到处找地儿,后来csdn稳定了,其他的地盘就荒了,就这块地儿还留着,在csdn写了东西也捎带着copy到这儿来了 囧~~  回复  更多评论   

# re: 走进JavaFX-(2)[未登录] 2008-12-17 14:01 object

这不就是javascript和actionscript的语法么  回复  更多评论   

# re: 走进JavaFX-(2) 2008-12-18 08:28 西门町学士

@object
表看见var、def、function就宣称这是JavaScript  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: