Was this page helpful?

JavaFX

    JavaFX專欄

    大綱

    註解

    跟 Java 一樣

    //單行註解
    
    /*多行
    註解   
    */
    
    /*另外一種
    *多行註解
    */

    資料型態

    型態 細節 對應的 Java 型態
    Boolean True of False java.lang.Boolean
    Byte 8bit java.lang.Byte
    Character 16bit Unicode java.lang.Character
    Double 64bit 浮點數 java.lang.Double
    Duration 時間間隔  
    Float 32bit 浮點數 java.lang.Float
    Integer 32bit 整數 java.lang.Integer
    Long 64bit 整數 java.lang.Long
    Number 32bit 浮點數 java.lang.Float
    Short 16bit 整數 java.lang.Short
    String Unicode 文字 java.lang.String

    Duration 型態

    JavaFX 新的型態,用來表示時間間隔,給值時要加上時間單位,最小是 ms 最大是 h,同時也可以進行運算。

    var dur1 = 15ms;
    var dur2 = 15s;
    var dur3 = 15m;
    var dur4 = 15h;
    
    println(dur1);
    println(dur2);
    println(dur3);
    println(dur4);
    
    println(dur1+2ms);
    println(dur2-3s);
    println(dur3*4);
    println(dur4/5);

    Output

    15.0ms
    15000.0ms
    900000.0ms
    5.4E7ms
    
    17.0ms
    12000.0ms
    3600000.0ms
    1.08E7ms

    變數

    宣告

    var valLong1:Long= 123456789;
    var valLong2 = 123456789;
    //以下會出現編譯錯誤
    valLong2 = "Hello! World";
    //以下會喪失小數點後的數值
    valLong2 = 999.99;

    保留字 var 用來宣告變數,變數名稱是 valLong1,可在變數名稱後面用「:」指定變數型態,也可以不指定變數型態,注意的是 JavaFX 變數是靜態型別,非動態型別,所以在程式的操作中,給了不是 Long 的型別的值會發生錯誤。

    預設值

    var valLong3;
    var valLong4:Long;
    var valLong5:Double;

    Output

    null
    0
    0.0
    宣告變數不給初始值的話會有預設值,如果沒型態的話就是 null,有型態的話,就是型態的預設值。

    def 關鍵字

    def valLong6 = 123456789;
    //以下會出現編譯錯誤
    valLong6 = 999;

    跟 final 一樣,給值後就不能在更改了。

    取用變數物件的方法

    var valLong7:Double = 999.999;
    println(valLong7);
    println(valLong7.getClass());
    println(valLong7.hashCode());
    println(valLong7.intValue());
    //也可以取用物件內的靜態成員
    println(Double.MAX_VALUE);

    Output

    999.999
    class java.lang.Double
    -1288078753
    999
    1.7976931348623157E308

    雖然是 JavaFX,不過取用物件內的方法、成員跟 Java 一樣。

    型別轉換

    var val8:Double = 99999.99999;
    var val9:Float ;
    val9 = val8 as Float;
    println(val8);
    println(val9);

    Output

    99999.99999
    100000.0

    使用 as 來進行型別轉換,要注意的是長度長的型別轉到長度短的型別,會發生精確度的問題。

    型別判斷

    var str:java.lang.Object = "A string";
    println("str var is string? {(str instanceof String)}");

    Output

    str var is string? true

    對於未知型別可以使用 instanceof 來判斷型別,結果就是 true 跟 false。

    循序集合(Sequences)

    循序集合(Sequences),類似陣列,但具有許多特殊的操作

    定義方式

    範圍

    var seq1 = [ 1 .. 100 ];
    println(seq1[0]);
    println(seq1[49]);
    println(seq1[99]);
    //印出陣列長度
    println(sizeof seq1);
    
    var seq2 = [ 0 .. 100 step 5];
    println(seq2[0]);
    println(seq2[9]);
    println(seq2[19]);
    //可以直接印出陣列內的所有內容
    println(seq2);

    利用 [x .. y]  宣告從 x 到 y 的陣列,另外可以使用 step 來決定步進值。可以使用 sizeof 來取得陣列長度,另外直接將陣列丟進 println() 會將陣列內的所有元素印出。

    Output

    1
    50
    100
    100
    
    0
    45
    95
    [ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 ]

     

    綁定(bind)

    可以綁定 B 變數參照 A 變數,當 A 變數的值有變動 B 變數也會跟著變。

    var thisYear = 2008;
    def lastYear = bind thisYear-1;
    def nextYear = bind thisYear+1;
    println("2008: {lastYear}, {thisYear}, {nextYear}");
    thisYear = 1996;
    println("1996: {lastYear}, {thisYear}, {nextYear}");
    

    Output

    2008: 2007, 2008, 2009
    1996: 1995, 1996, 1997
    

    可以看到 lastYear 跟 nextYear 是跟著 thisYear 跑,即使 lastYear 跟 nextYear 是使用 def 宣告的也是一樣,因為 lastYear 跟 nextYear 都是拿 thisYear 來作運算,當 thisYear 變動時, lastYear 跟 nextYear 自然也就跟著變動。

    輸出內容到 Console

    雖然 JavaFX 主打 RIA 不過基本可以看作是建立在 Java 上的新語言,所以輸出到 Console 也不是難事,只要使用 println() 或是 print() 就可以了,如果中間要加文字,只要使用「{}」將變數包起來就可以了,不用像 Java 要使用「+」來進行字串串接。

    //印出變數
    println(valLong);
    //差別在有沒有換行
    print(valLong);
    //字串與變數
    print("valLong is {valLong}");

    佈署

    如果使用 Eclipse + JavaFX plug-in 來開發的話,會在建置完後在專案資料夾內的 dist 會有 jar 檔跟 jnlp,上傳到網頁空間就可以完成佈署。

    學習資源

     

    Was this page helpful?
    標籤 (Edit tags)
    • No tags
    blog comments powered by Disqus
    Powered by MindTouch Core