作者:郝春利
转贴请注明出处:http://blog.csdn.net/froole
JavaFX是SUN为Java程序员简化GUI开发而推出的一款新的脚本语言。他不但支持目前流行的RIA概念,而且完全打破了传统的基于Java的GUI开发的概念。使得基于Java的GUI开发中的UI和逻辑处理更容易分离。 JavaFX的好处这里不费太多口舌,笔者鉴于JavaFX的中文学习资料还比较少,在此把自己的学习JavaFX脚本语言的笔记公开。 以演示代码的形式,对JavaFX脚本语言的代码作逐一解说。 针对于文章内容不明白的地方,可以留言提问。 关于环境搭建 编译、执行JavaFX需要下载JavaFX SDK。读者也可以根据自己的喜好在NetBeans或者Eclipse等IDE上安装插件。 下载地址: http://javafx.com/downloads/windows.jsp 使用JavaFX SDK的读者,编译、执行等命令的使用方法可以参考官方文档。 javafxc和javafx命令的使用方法类似于javac和java命令,本文将不再做具体说明: http://openjfx.java.sun.com/current-build/doc/
-
JavaFX脚本的语法特征
- 目标指向
- 声明语法
- 静态型
- 绑定
- 替换触发器
- 时间间隔支持
- 声明语法
声明Stage目标举例:
Stage {
title: "Hello"
width: 160
height: 80
onClose: function() {
System.exit(0);
}
scene: Scene {
content: SwingLabel {
font: Font {
size: 24
}
text: "Hello, World!"
}
}
} - 静态型定义
整数型定义举例:
var number: Integer;
var number = 10; -
绑定
提示:println相当于java中的System.out.pringln- 变量间绑定
var x = 10;
var y = bind x;
println("Y: {y}");
x = 20;
println("Y: {y}"); 输出结果:
Y: 10
Y: 20: - 变量计算结果绑定
var x = 10;
var y = bind x * 2;
println("Y: {y}");
x = 20;
println("Y: {y}");输出结果:
Y: 20
Y: 40 - 多个变量绑定
var x = 10;
var y = 5;
var z = bind x + y;
println("Z: {z}");
x = 20;
println("Z: {z}");
y = 10;
println("Z: {z}");输出结果:
Z: 15
Z: 25
Z: 30 - 函数绑定
bound function add(a: Integer, b: Integer): Integer {
return a + b;
}
var x = 10;
var y = 5;
var z = bind add(x, y);
println("Z: {z}");
x = 20;
println("Z: {z}");
y = 10;
println("Z: {z}");输出结果:
Z: 15
Z: 25
Z: 30 - 双方向绑定
var x = 10;
var y = bind x with inverse;
println("X: {x} Y: {y}");
x = 20;
println("X: {x} Y: {y}");
y = 30;
println("X: {x} Y: {y}");输出结果:
X: 10 Y: 10
X: 20 Y: 20
X: 30 Y: 30
- 变量间绑定
-
替换触发器
- 空值替换
var value: String on replace oldValue {
println("/nValue has changed!");
println("Old Value: {oldValue}");
println("New Value: {value}");
};
value = "JavaFX";
value = "JavaFX Script";输出结果:
Value has changed!
Old Value:
New Value:
Value has changed!
Old Value:
New Value: JavaFX
Value has changed!
Old Value: JavaFX
New Value: JavaFX Script - 初始值替换
var value: String = "Java" on replace oldValue {
println("/nValue has changed!");
println("Old Value: {oldValue}");
println("New Value: {value}");
};
value = "JavaFX";
value = "JavaFX Script";输出结果:
Value has changed!
Old Value:
New Value: Java
Value has changed!
Old Value: Java
New Value: JavaFX
Value has changed!
Old Value: JavaFX
New Value: JavaFX Script
- 空值替换
- 时间间隔支持
var duration1: Duration = 10ms; // 10毫秒
var duration2: Duration = 1s; // 1秒
var duration3: Duration = 1m; // 1分
println("{duration1} * 100 == {duration2}? {duration1* 100 == duration2}"); 输出结果:
10ms * 100 == 1000ms? true
转贴请注明出处:http://blog.csdn.net/froole