JavaFX介紹
什麼是JavaFX?
JavaFX實際上不是一種語言,而是Sun Microsystem為了建立RIA (Rich Internet Application; 豐富網路應用程式) 而推出的產品組合;目前預計的成員包括:JavaFX Script、JavaFX Mobile、JavaFX TV。其中,JavaFX Script (幾乎能算是) 一種新的程式語言,目前大家所在討論的 JavaFX 大多是指 JavaFX Script;而 JavaFX Mobile 及 JavaFX TV 則像目前相當火紅的 Android 一樣,是在特定裝置上設計的平台,而非程式語言。而我們在未來的介紹與教學中,幾乎都是指 JavaFX Script 語言。但不管是哪一個 JavaFX 產品,他們被設計出來的最大目的就是要讓程式的介面與內部邏輯設計上能更加配合,並使得內部程式設計師與介面設計者的合作能更輕鬆緊密;JavaFX Script 就是為了簡化目前 Java 程式的介面開發所設計出來的。
此外,JavaFX Script 標榜的另一大賣點是在學習上,完全不需要懂 Java Swing 以及 Java 2D 等工具
JavaFX Script 語言的特點
JavaFX Script 與傳統 Java 語言有許多不同之處,關於這些,大家應該也很容易在網路可以找到相關的說明;筆者在此也稍作一下介紹,讓大家在等等的學習上能有點心理準備: )Declarative, statically-typed scripting language
Facilitates rapid GUI development
Many cool, interesting language features
Runs on Virtual Machine for the Java™ platform
Deployment options same as Java programs
Fully utilizes Java class libraries behind the scenes
JavaFX Script 與傳統 Swing 的比較
我們來看看下面這個簡單的使用者介面:
HelloFrame.java
import javax.swing.*;
public class HelloFrame extends JFrame {
public HelloFrame(String title) {
super(title);
JMenuBar menubar = new JMenuBar();
setJMenuBar(menubar);
JMenu fileMenu = new JMenu("File");
menubar.add(fileMenu);
JMenu helpMenu = new JMenu("Help");
menubar.add(helpMenu);
JLabel label = new JLabel("Hello Everyone");
label.setFont(label.getFont().deriveFont(24f));
add(label);
pack();
setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
HelloFrame frame = new HelloFrame("Java Demo");
}
});
}
}
HelloFrame.fx
import javafx.ext.swing.SwingFrame;
import javafx.ext.swing.Label;
import javafx.ext.swing.Menu;
import javafx.scene.Font;
Frame {
title: "JavaFX Demo"
menus: [Menu{text: "File"}, Menu{text: "Help"}]
content: Label {
text: "Hello Everyone"
font: Font{size:48}
}
visible: true
}
很明顯的,JavaFX Script 的程式碼簡明了非常多,雖然我們現在還沒有真正的寫過 JavaFX Script 的程式碼,但大略可以感覺的出來:我們先建立了一個可以顯示 GUI 元件的 Frame,並且在他的內部指定了標題該顯示什麼文字 (title: "JavaFX Demo")、選單列該有哪些項目和上面顯示的文字,最後,我們在這個 Frame 的內容中加進了一個可以顯示文字的 Label,一切都相當的直覺,不再有什麼複雜多餘的設定 (雖然那些設定能讓你知道你現在到底做了些什麼)。
上面的例子並不是為了突顯 JavaFX Script 的簡明而刻意造出來的,在未來我們會發現:這樣簡明,易懂的程式編寫風格,正是 JavaFX Script 語言在設計上的哲學,
建立第一個 JavaFX Script 程式
軟體與系統需求
目前開發 JavaFX Script 程式的主要工具是 NetBeans,在安裝該工具之前,必須先確保你的系統裡面已經有安裝 Java SE 6 Development Kit (JDK)。尚未安裝的朋友可以到下列網址下載並安裝:http://java.sun.com/javase/downloads/index.jsp

下載並安裝開發環境 (IDE)
對於尚未安裝 NetBeans IDE 的使用者,可以到這邊來下載 NetBeans IDE 6.1 with JavaFX 的版本並安裝。下載位置如圖:
建立第一個 JavaFX Script 程式
首先先建立一個JavaFX的專案:- 點選「File」選單,選擇「New Project...」。
- 會出現以下的專案建立精靈,在 Categories (分類) 欄點選「JavaFX」後在 Projects 欄選擇「JavaFX Script Application」,Next。
- 在接下來出現的應用程式設定視窗中,我們可以在:(如下圖)
- Project Name 設定此專案的名稱;在此我們取名為 HelloFXApp
- Project Location 設定專案資料夾要放在哪個位置中;在此為 C:\JavaFXDemo
- Project Folder 則是專案資料夾的正確路徑;在此為 C:\JavaFXDemo\HelloFXApp
- Set as Main Project 勾選代表未來按下 IDE 中的「Run Main Project」時會直接執行此專案
- Create Main File 勾選代表設定結束後,NetBeans會幫你建立出一個名稱為 Main 的檔案,並且屬於「專案名稱」這個 package 之下;所以在此如果不更動設定,那麼 NetBeans 就會幫我門鑑出一個名叫 Main.fx 的檔案,並且屬於 hellofxapp 這個 package 中。
- 按下「Finish」。



現在,我們把原本 NetBeans IDE 中編輯程式碼區域的 // place your code here 以上述 HelloFrame.fx 的程式碼給取代掉,再按下



這次對於 JavaFX 的介紹就先到這邊,關於 JavaFX Script 更深入的內容,我們會在未來的文章中再做探討。
留言