幽哥

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
   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

posted on 2010-04-28 16:05  幽哥  阅读(588)  评论(0编辑  收藏  举报