任何的程式都要從Hello World開始學,JavaFX雖是使用Java原生程式碼撰寫,但它的用法還是跟Awt和Swing有一點差異。目前最適合開發JavaFX程式的IDE應該是Netbeans,所以之後都會使用Netbeans來學習JavaFX。



Hello JavaFX程式碼

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloJavaFX extends Application {
    
    @Override
    public void start(Stage primaryStage) {
	Button btn = new Button();
	btn.setText("Say 'Hello JavaFX'");
	btn.setOnAction(new EventHandler<ActionEvent>() {
	    
	    @Override
	    public void handle(ActionEvent event) {
		System.out.println("Hello JavaFX!");
	    }
	});
	
	StackPane root = new StackPane();
	root.getChildren().add(btn);
	
	Scene scene = new Scene(root, 300, 250);
	
	primaryStage.setTitle("Hello JavaFX!");
	primaryStage.setScene(scene);
	primaryStage.show();
    }

    public static void main(String[] args) {
	launch(args);
    }
    
}

執行結果:

按下「Say 'Hello JavaFX'」按鈕後,於Command Line顯示出「Hello JavaFX!」。

Hello JavaFX要注意的項目

Line 9: JavaFX應用程式的類別必須要繼承(Extends)javafx.application.Application。

Line 12: start()方法是JavaFX應用程式的程式進入點。

Line 34: launch()方法可以用來執行獨立的JavaFX應用程式,常用於Java的程式進入點main()。這裡要注意的是launch()方法是Application類別下的public static方法,所以呼叫launch()方法的類別可以不必繼承Application。

Line 9,26: JavaFX應用程式把GUI定義為Stage和Scene。Stage和Scene的關係如下圖:

Stage是JavaFX應用程式最上層的容器,一個應用程式擁有一個固定的Stage,而Stage底下雖可以建立出不同的Sence,但一個Stage只能同時使用一個Sence。

Line 23,24,26: 建立StackPane作為建立Sence時的root node(必須是Parent),並指定Sence的大小為300x250。Root node底下可以再接上不同的node。

Line 33: 以往Java的main程式進入點如果在建置Jar檔案的時候有用到JavaFX Packager tool就可以不用寫,JavaFX Packager會自動將JavaFX Launcher包進JAR檔案中。但是如果沒有用到JavaFX Packager就還是得用main來呼叫,所以寫上去會比較好,避免在不同平台下建置同樣的專案會有無法正常執行的情況!