<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無為

    無為則可為,無為則至深!

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks

     

    原作者: Anghel Leonard
    時間:08/01/2007
    翻譯:Caoer
    200785

    什么是JavaFXSUN(太陽公司)在2007年春天發(fā)布了一個叫JavaFX新框架。這是一個泛泛的名字,因為JavaFX主要包含Script and Mobile兩個組件,在將來SUN將開發(fā)更多的組件。

    JavaFX 的核心是 JavaFX 腳本,是一個聲明式腳本語言。盡管同Java代碼非常不同,但是同Java類具有很高的交互度。 JavaFX 中的很多類主要為了更容易實現(xiàn)SwingJava2D而設計的。使用 JavaFX 腳本,您能很容易的為文本和圖形開發(fā)GUI接口、動畫和非常COOL的效果。并且,您能將JavaHTML代碼包裝到 JavaFX 腳本中。

    第二個組件- JavaFX Mobile,是為移動設備開發(fā)Java應用的平臺。它最終會成為開發(fā) JavaFX 腳本的平臺但是現(xiàn)在同這篇文章實用的技術還很不兼容。

    JavaFX 應用的一些例子

    在開始學習一門新的語言前,讓我們先看一下JavaFX代碼的一些例子。JavaFX 官方站點具有大量的JavaFX 實例。請點擊JavaFX Script 2D Graphics Tutorial下載該實例. 下載完成以后,雙擊tutorial.jnlp 文件即可運行。幾秒過后,你應該能夠看到如圖一的JavaFX實例運行場景(若沒有出現(xiàn)該圖片,你必須為.jnlp擴展名重新配置Java Web Start)。 
    Running the tutorial.jnlp
    圖一、運行 tutorial.jnlp tutorial

    花些時間看一看這些例子和源代碼。僅僅使用有限的幾行JavaFX代碼就能得到很多有趣的效果。如果你對于JavaFX的應用還是感到摸不著頭腦,看一看下面的兩個demo。它們是StudioMoto Tesla Motors 站點的部分重新實現(xiàn)。您可以從OpenJFX 項目站點下載OpenJFX 腳本Studiomoto Demo Tesla Demo。它們需要Java Web Start 才能運行,但是也取決于你的機器配置它們可能自動運行,或者你必須找到和運行已經下載的.jnlp文件。

    下載安裝JavaFX


    如果你對于學習開發(fā)JavaFX應用程序,您應該了解至少使用JavaFX三個方法。同時了解JavaFX應用程序不是基于瀏覽器的也很重要。最簡單最快捷的方法是基于叫JavaFXPad輕量級的工具。使用該工具的主要優(yōu)勢是你總能立即看到你在編輯器里所作更改的效果。你能從JavaFX項目網站下載到該工具( JavaFXPad )。并且運行它需要Java Web Start (如圖二)。

     Running the javafxpad editor
    圖二、運行JavaFXPad編輯器

    使用JavaFX的另一種方式是使用JavaFX腳本NetBeans 5.5插件或者Eclipse 3.2插件(需要下載和安裝NetBeans 5.5 或者 Eclipse 3.2.2以上集成開發(fā)工具 )。若您已經使用 NetBeans 5.5開始你的JavaFX之旅,OpenJFX項目網站的對于NetBean開發(fā)JavaFX的說明將會給予你幫助。 相似的如果您使用基于EclipseJavaFX插件,您可以去JavaFXEclipse插件。注意這篇文章中的所有例子已經在NetBeans5.5JavaFX插件中測試過,但是應該能夠使用其他方法運行。

    使用NetBeans 5.5下的JavaFX插件開發(fā)Hello World 程序

    每當開始學習一門新的語言時,我們必定要寫Hello World 小程序:

    源碼列表1

    import javafx.ui.*;

    import java.lang.System;

    Frame {

    centerOnScreen: true

    visible: true

    height: 50

    width: 350

    title: "HelloWorld application..."

    background: yellow

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

    content: Label {

    text: "Hello World"

    }

    }

    NetBeans5.5開發(fā)和運行這個小程序步驟如下:

    1.                   啟動NetBeans 5.5.

    2.                   從主菜單選擇File -> New Project.

    3.                   在新項目窗口,選擇目錄常規(guī)目錄和 Java 應用項目(點擊下一步).

    4.                   在新的Java應用程序窗口,在項目名文本框敲入 "FXExample".

    5.                   在相同窗口,用瀏覽按鈕選擇項目的目錄.

    6.                   取消 "Set as main project" "Create main class" 復選框 (點擊完成).

    7.                   右擊FXExample -> Source Packages 和選擇 New -> File/Folder.

    8.                   在新的文件窗口,選擇另一個目錄和JavaFX文件類型(點擊下一步).

    9.                   在新的JavaFX文件窗口,敲入"HelloWorld" 作為文件名和"src"作為目錄(點擊完成).

    10.               拷貝源碼列表1 HelloWorld.fx.

    11.               右擊FXExample 項目選擇項目屬性.

    12.               在項目FXExample屬性對話框 ,選擇從目錄面板運行節(jié)點.

    13.               在參數(shù)文本框敲入 "Hello World" (點擊完成).

    14.               右擊FXExample 項目選擇運行項目選項.

    如果一切良好,你應該看到一個窗體如圖三:

    Running the Hello World application


    圖三、 NetBeans 5.5中運行 Hello World 應用程序

    現(xiàn)在你擁有了開發(fā)和運行任何JavaFX應用程序的IDE軟件支持.

    JavaFX 語法

    在正式開始學習JavaFX,讓我們?yōu)g覽一遍該語言的語法要點。如果你非常熟悉Java語言,這些語法的大多數(shù)會讓你感到非常熟悉,但是有一些會相當不一樣。

    JavaFX 原始類型

    JavaFX 支持原始類型:String (對應于 java.lang.String), Boolean (對應于 java.lang.Boolean), Number (對應于 java.lang.Number) Integer (對應于 byte,short,int,long,BigInteger).

    JavaFX 變量

    一個JavaFX變量使用var關鍵字聲明。看下面的例子:

    var x:Number = 0.9;

    var name:String = "John";

    var y:Integer = 0;

    var flag:Boolean = true;

    var numbers:Number = [1,2,3,4,5]

    JavaFX 操作符


    眾所周知的Java操作符&&, || ! JavaFX中采用下面的形式:

    ·                     Java: &&
    JavaFX: and

    ·                     Java: ||
    JavaFX: or

    ·                     Java: !
    JavaFX: not

    JavaFX 方法


    JavaFX
    支持這些方法. 具有參數(shù)、變量聲明和返回值的方法舉例:

    function taxes(x) { var t:Number = (19.0/100.0)*x; return t; }

    JavaFX if 語句


    JavaFX中,你你能通過使用if語句使用條件判斷。

    if (條件) { //動作 } else if (條件) { //動作 } else { //動作 }

    JavaFX while 語句


    這個 while 語句同在Java中的while語句相似。 while (條件) { //動作}

    JavaFX for 語句


    for 語句用于循環(huán)和間隔(間隔使用方括號[] .. 符號表示).

    //i 將取值: 0, 1, 2, 3, 4, 5象在 (i in [0..5]) { //伴隨 i的動作 }代碼塊中

    JavaFX 過程


    JavaFX
    過程以operation 關鍵字為標志。一個簡單的例子:

    operation startClock() {do{ while(true) {

    if(seconds>=360) {seconds = 0; seconds = [0,6..360] dur 60000 linear;}

    if(minutes>=360) {minutes = 0; minutes = [0,6..360] dur 3600000 linear;}

    if(hours>=360) {hours = 0; hours = [0,6..360] dur 43200000 linear;} } }}

    JavaFX


    JavaFX
    類使用class關鍵字. 一個 JavaFX 類能夠使用extends 關鍵字繼承多個類使用逗號分割
    這些類的名字。在花括號中間你可以放屬性、方法和過程,例如下面的例子:

    class Order {

    attribute order_nr: String;

    attribute ordertype: Order inverse Order.products;

    attribute products: Order* inverse Order.ordertype;

    function getOrderNr(): String;

    operation addOrder(order: Order);

    }

     

    注意屬性使用attribute關鍵字聲明,方法體和過程不在類體中,它們單元定義在類聲明以后,在下文你很快就能看到。 inverse 子句是一個可選項 ,它表示一種同在類中另一個屬性的雙向關系。在這個案例中JavaFX將自動完成更新(插入、替代和刪除)你能在Java.net上找到更完整的文檔

    熟悉JavaFX

     

    在本小節(jié),您將會看到一系列的小例子,這些例子覆蓋JavaFX的各種特性和功能。主要目的是讓你熟悉JavaFX代碼和JavaFX應用程序的邏輯。第二個目標是當你需要開發(fā)僅僅需要幾行代碼就會有非常酷的GUI,動畫和好的效果時候使你確信JavaFX值得好好研究一下。所有列出的例子將介紹關于JavaFX的技巧。每一個例子只使用很少的描述處理,所以不要想找到大量的注釋。所有這些可訪問的例子你都是你自己就能運行的,所以讓我們開始吧。當我們需要使用System.out.println 打印屬性值時候,你可以把它的名字放進含有引用的字符串,象源碼列表2中所示的那樣。

    源碼列表2

    //帶有應用文本的表達式

    import java.lang.System;
    var mynumber:Number = 10;
    System.out.println("
    數(shù)字是: {mynumber}");

     

    結果: 數(shù)字是: 10
    JavaFX
    支持變量的計數(shù)這樣一個有用的功能。這個功能利用下面的三個操作符實現(xiàn):

    ·                     ?: 可選的(可能為 null)

    ·                     +: 1或多個

    ·                     *: 0或多個

    源碼列表3

    //變量計數(shù)

    import java.lang.System;
    var mynumbers:Number* = [1,2,7];
    System.out.println("
    數(shù)字是: {mynumbers}");

     

    結果: 數(shù)字是: 1 2 7
    JavaFX, 在聲明部分不指定變量的類型是可能的。 這不會產生錯誤,因為JavaFX 將在該變量的使用中自動發(fā)現(xiàn)它的類型。

    源碼列表 4

    //變量類型是可選的

    import java.lang.System;
    var days = ["Monday,","Friday,","Sunday"];
    System.out.println("
    你必須工作: {days}");


    結果: 你必須工作: Monday, Friday, Sunday
    你可以使用sizeof 操作符得到一個數(shù)組的大小:

    源碼列表 5

    //得到一個數(shù)組的大小

    import java.lang.System;
    var lotto = [21,30,11,40,5,6];
    System.out.println("
    數(shù)組大小:{sizeof lotto}");

     

    結果: 數(shù)組大小: 6

    您能使用 [] 操作符得到滿足指定條件的子數(shù)組。條件放在 [] 中作為布爾判斷 。這個與XPath 謂詞相似.

    源碼列表 6

    //使用[] 操作符 - XPath相似

    import java.lang.System;
    var mynumbers = [1,2,7,3,30,15,14,6,4];
    var numbers = mynumbers[n|n < 10];
    System.out.println("
    小于10的數(shù)字為: {numbers}");

     

    結果: 小于10的數(shù)字為: 1 2 7 3 6 4
    你可以使用indexof 操作符得到指定序數(shù)位置的數(shù)組中一個元素

    源碼列表 7

    //返回指定序數(shù)位置的數(shù)組中的元素

    import java.lang.System;

    var mynumbers = [1,2,7,3,30,15,14,6,4];
    var number_four = mynumbers[indexof . == 4];
    System.out.println("
    數(shù)字4:{number_four}");

     

    結果: 數(shù)字4: 30

    當您想要向一個數(shù)組中插入一個元素時,你可以使用下列 insert 語句中的一個:

    ·                     as first: 在第一個位置插入

    ·                     as last:在最后一個位置(默認)插入

    ·                     before: 在前一個位置插入

    ·                     after:在下一個位置插入

    你可以使用 delete 語句從一個數(shù)組中刪除一個元素.

    源碼列表8

    //插入和刪除語句
    import java.lang.System;
    var mynumbers = [1,2,7];
    System.out.println("Before inserting anything: {mynumbers}");
    insert 10 into mynumbers;
    System.out.println("After inserting at the end the \"10\" value:{mynumbers}");
    insert [8,6,90] as first into mynumbers;
    System.out.println("After inserting at the first positions the \"8,6,90\" values:{mynumbers}");
    insert 122 as last into mynumbers;
    System.out.println("After inserting at the end the \"122\" value:{mynumbers}");
    insert 78 before mynumbers[3];
    insert 11 after mynumbers[3];
    System.out.println("After inserting the \"78\" and \"11\" values before/after the 3rd element:{mynumbers}");
    delete mynumbers[. == 122];
    System.out.println("After deleting:{mynumbers}");

    結果:
    Before inserting anything: 1 2 7
    After inserting the 10 value at the end: 1 2 7 10
    After inserting the 8, 6, and 90 values at the first positions: 8 6 90 1 2 7 10
    After inserting the 122 value at the end: 8 6 90 1 2 7 10 122
    After inserting the 78 and 11 values before/after the 3rd element: 8 6 90 78 11 1 2 7 10 122
    After deleting: 8 6 90 78 11 1 2 7 10

    JavaFX中的一個非常好的功能是list。這個功能使用 select foreach 操作符實現(xiàn)。這有兩個例子(一個使用 select 和使用 foreach) 得到指定間隔的奇數(shù)。

    源碼列表9

    //JavaFX中的 select foreach 操作符

    import java.lang.System;
    function odd(p:Number)
    { return select i from i in [1.0 ..p]
     where (i%2 == 0.0);
    }

    var result = odd(10.0);
    System.out.println("Odd numbers:{result}");

    結果: Odd numbers: 2.0 4.0 6.0 8.0 10.0

    源碼列表10 ( 源碼列表 9相同, 但是有 foreach)

    //JavaFX中的select foreach 操作符

    import java.lang.System;
    function odd(p:Number) {
           return foreach (i in [1.0 ..p]
         where (i%2 == 0.0)) i;
         }
    var result = odd(10.0);
    System.out.println("Odd numbers:{result}");

    這個例子顯示了 foreach 對于創(chuàng)建好的效果非常有用。

    源碼列表11

    //JavaFX中的 select foreach 操作符

    import java.lang.*;
    import javafx.ui.*;
    import javafx.ui.canvas.*;
    Frame {
    centerOnScreen: true
    visible: true
    height: 500
    width: 500
    title: "Foreach demo..."
    onClose: operation() {
    System.exit(0);
    }
    content: ScrollPane {
    background: white
    view: Canvas {
     content: bind
    foreach (i in [1..8], j in [1..8])
    Rect { x: i*30 y: j*30 width:30 height:30 fill: Color {red: (100+i) green: (100+j) blue: (100+(i*j))
    }
    stroke:white
    strokeWidth:1 } }

    }

    }

     Running listing 11
    圖四. 運行源碼列表 11

    使用雙箭頭括號引用為JavaFX關鍵字的變量名或者屬性名,如下所示。

    源碼列表 12

    //標志符引用

    import java.lang.System;

    for (<<for>> in [0..3]) {

    System.out.println("for = {<<for>>}");

    }

    結果: for = 0 for = 1 for = 2 for = 3

    當你需要開發(fā)Swing接口時,JavaFX 是一個偉大的工具,因為 JavaFX 考慮了非常多用來降低代碼量和同javax.swing.*并存友好。在上一節(jié)(使用NetBeans5.5中的JavaFX插件測試Hello World應用程序),你看到了創(chuàng)建一個窗體是如何容易。這有兩個更好的例子:創(chuàng)建按鈕和文本框。

    源碼列表 13

    import javafx.ui.*;

    import java.lang.System;

    Frame{

    content: Button { text: "Exit" action: operation() { System.exit(0); } }

    visible: true

    }

      Running listing 13
    圖五. 運行源碼 13

    源碼列表14

    import javafx.ui.*;

    Frame {

    content: GroupPanel { var myRow = Row { alignment: BASELINE }

    var label_col = Column { alignment: TRAILING }

    var field_col = Column { alignment: LEADING }

    rows: [myRow] columns: [label_col, field_col]

    content: [SimpleLabel { row: myRow column: label_col text: "Type your text here:" }, TextField { row: myRow column: field_col columns: 50 }] }

    visible: true

    };

     Running listing 14
    圖六. 運行源碼 14

    Java.net 也有使用JavaFx創(chuàng)建 Swing接口的教程。

     


     



    凡是有該標志的文章,都是該blog博主Caoer(草兒)原創(chuàng),凡是索引、收藏
    、轉載請注明來處和原文作者。非常感謝。

    posted on 2007-08-07 11:49 草兒 閱讀(11111) 評論(5)  編輯  收藏 所屬分類: javaJAVA WEB應用

    Feedback

    # re: JavaFX入門教程一 2007-08-07 12:04 Thomas
    不錯,樓主辛苦了!  回復  更多評論
      

    # re: JavaFX入門教程一 2007-08-07 12:08 BeanSoft
    支持一下!  回復  更多評論
      

    # re: JavaFX入門教程一 2007-08-07 13:09 草兒
    為博友服務不辛苦!哈哈  回復  更多評論
      

    # re: JavaFX入門教程一 2007-11-22 11:52 HJJ
    哎,看不懂,郁悶  回復  更多評論
      

    # re: JavaFX入門教程一 2008-02-15 16:15 quehanwei
    好  回復  更多評論
      

    主站蜘蛛池模板: 国内精品久久久久久久亚洲| 色猫咪免费人成网站在线观看| 国产在亚洲线视频观看| 亚洲欧美日韩综合久久久久| 久久综合久久综合亚洲| 国产精品亚洲综合久久| 亚洲欧洲国产综合AV无码久久| 亚洲人成网站18禁止| 亚洲精华国产精华精华液| 亚洲a无码综合a国产av中文| 看成年女人免费午夜视频| 麻豆安全免费网址入口| 国产精品美女久久久免费| 中国黄色免费网站| 一级毛片免费播放| 国产成人免费高清激情明星| 男人的好看免费观看在线视频| 成人免费看片又大又黄| 国产免费人成在线视频| 久久99亚洲综合精品首页| 国产亚洲高清不卡在线观看| 久久亚洲精品无码aⅴ大香| 亚洲一级毛片免费观看| 亚洲国产精品无码观看久久| 特级毛片aaaa免费观看| 暖暖免费日本在线中文| 7723日本高清完整版免费| 国产猛烈高潮尖叫视频免费| 国产成人精品日本亚洲专区| 亚洲Av熟妇高潮30p| 亚洲五月丁香综合视频| 深夜A级毛片视频免费| 18禁在线无遮挡免费观看网站| 91精品免费国产高清在线| 国产成人在线观看免费网站| 亚洲人成无码网站| 亚洲区精品久久一区二区三区| 在线观看亚洲精品专区| 国产成人AV免费观看| 搡女人免费视频大全| 三上悠亚亚洲一区高清|