JavaFX脚本语言入门(1)——语法概要

时间:2023-01-29 13:33:09

作者:郝春利

转贴请注明出处:http://blog.csdn.net/froole

 

JavaFX脚本语言入门(1)——语法概要

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/
  1. JavaFX脚本的语法特征
    • 目标指向
    • 声明语法
    • 静态型
    • 绑定
    • 替换触发器
    • 时间间隔支持
  2. 声明语法
    声明Stage目标举例:
    Stage {
            title: "Hello"
            width: 160
            height: 80

            onClose: function() {
                    System.exit(0);
            }

            scene: Scene {
                    content: SwingLabel {
                            font: Font {
                                    size: 24
                            }
                            text: "Hello, World!"
                    }
            }
    }

  3. 静态型定义
    整数型定义举例:
    var number: Integer;
    var number = 10;

  4. 绑定
    提示:println相当于java中的System.out.pringln
    1. 变量间绑定
      var x = 10;
      var y = bind x;

      println("Y: {y}");

      x = 20;

      println("Y: {y}");
      输出结果:
      Y: 10
      Y: 20:

    2. 变量计算结果绑定
      var x = 10;
      var y = bind x * 2;

      println("Y: {y}");

      x = 20;

      println("Y: {y}");
      输出结果:
      Y: 20
      Y: 40
    3. 多个变量绑定
      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
    4. 函数绑定
      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
    5. 双方向绑定
      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
  5. 替换触发器
    1. 空值替换
      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
    2. 初始值替换
      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
  6. 时间间隔支持
    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
待续 <script type="text/javascript"><!--google_ad_client = "pub-2097865745512830";/* 728x90, 作成済み 08/12/22 */google_ad_slot = "5461334436";google_ad_width = 728;google_ad_height = 90;// --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

转贴请注明出处:http://blog.csdn.net/froole