JavaFX 1.X是以JavaFX Script的形式撰寫程式,其副檔名為fx
由於JavaFX Script與傳統Java差異甚多,開發人員需花費較多的時間學習,也因此JavaFX Script並未受到很大的重視。
至JavaFX 2.0,Oracle將JavaFX重新改寫,以Java語法取代原JavaFX Script語法與移除支援手機的Mobile版本,並正式併入Java SE 7 Update 6中,將原有的JavaFX編譯器 (javafxc.exe) 與直譯器 (javafx.exe),以Java編譯器 (javac.exe) 與直譯器 (java.exe) 取代,因此可使用同一個編譯器編譯Java與JavaFX程式。
Oracle發佈的Java 8後,JavaFX不再提供JavaFX SDK,而是直接將JavaFX作為函式庫,內建在JDK和JRE中,並且將版本號碼跟著Java,稱為JavaFX 8,而不再是以前的JavaFX 2.1、JavaFX 2.2了。
- init():初始化JavaFX應用程式。
- start():為JavaFX應用程式的進入點,在此為Java Applet。
- launch():啟動獨立 (Standalone) 的JavaFX應用程式,在此為視窗程式。
- stop():當JavaFX應用程式結束之前,將執行stop()方法。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Text;
import javafx.scene.Group;
// 繼承javafx.application.Application抽象類別
public class JavaFXHelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
Text text = new Text("("JavaFX Hello World");
text.setX(50);
text.setY(50);
Group group = new Group();
group.getChildren().add(text);
// 設定Scene的Layout Pane
Scene scene = new Scene(group);
// 設定Stage的標題
primaryStage.setTitle("JavaFX Hello World");
// 設定Stage的寬度
primaryStage.setWidth(250);
// 設定Stage的高度
primaryStage.setHeight(200);
primaryStage.setScene(scene);
// 顯示Stage
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
執行結果如下 :
JavaFX目前已直接內建在JDK和JRE中,因此它可以使用任何的Java函式庫,還可以在任意平台上執行(只要有安裝好JRE 8以上版本)。此外,它還允許使用CSS來實作JavaFX的GUI樣式,讓程式設計師可以專心寫程式,美工可以快速修改外觀,分工合作,使得開發專案的效率更高!若是連GUI的程式也不想寫,甚至可以使用Oracle提供的JavaFX Scene Builder工具來製作FXML,藉由拖曳的方式配置物件,待完成配置之後,並儲存成FXML格式檔案。
Scene Builder畫面 :
如何使用建置好的FXML檔案於程式碼中 : 把建置好的fxml檔案放到Eclipse的專案裡(記得要重新整理,不然執行時找不到fxml檔,會錯誤)
程式碼如下 :
package main;
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class MainJavaFx extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("/main/MyFxml.fxml"));
Scene scene = new Scene(root);
stage.setTitle("Table View Sample");
stage.setScene(scene);
stage.show();
}
}
執行結果如下 :
沒有留言:
張貼留言