JavaFX是SUN为Java程序员简化GUI开发而推出的一款新的脚本语言。他不但支持目前流行的RIA概念,而且完全打破了传统的基于Java的GUI开发的概念。使得基于Java的GUI开发中的UI和逻辑处理更容易分离。
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