JavaFX程序的基本結構
JavaFX作為Java新一代的GUI編程框架,受到Java程序員的廣泛歡迎。比起上一代的Swing技術,JavaFX功能更強大,編程更簡單,構造界面的控件種類更豐富,並且有功能強大的界面設計工具的支持。
下面就來簡單地介紹一下JavaFX程序的基本結構,並通過一個具體的例子來做說明。
首先,介紹一下JavaFX程序的基本構成。JavaFX程序作為一種特殊類型的應用程序,它的構成也是特殊的。JavaFX為了方便程序員編寫JavaFX程序,特別定義好了一個特殊的類Application,即javafx.application.Application,JavaFX程序中的主類必須從這個類派生出來,並且必須覆蓋start方法,這個方法是JavaFX程序的啟動方法,由Java虛擬機自動調用。代碼如下:
public class MyJavaFX extends Application {
@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
// code here
}
}
start方法的主要作用就是完成程序界面的具體構造,它接受的參數primaryStage是由Java虛擬機自動創建的一個特殊對象,稱為主舞台,相當於程序的主窗口。我們需要在這個主舞台上完成界面的構造。首先需要創建一個場景Scene對象,然后將場景對象添加到主舞台上,然后再在場景上擺放各種節點Node來構造界面。它們的關系如下圖所示:
圖中的按鈕Button就是控件,控件也是節點的一種,具體的界面主要就是由各種控件來構成,不同的控件有着不同的外觀和功能。
為了更好地構造不同的界面,可以借助各種面板來進行布局。JavaFX提供了多種面板供我們使用,方便我們進行不同風格的布局。
下面的例子中使用了HBox 面板,HBox的布局策略是將所有節點擺放在同一排。首先創建了兩個Button,代碼如下:
Button btOK = new Button("OK");
btOK.setPrefSize(100, 20);//將Button的寬度和高度設置為100和20
Button btCancel = new Button("Cancel");
btCancel.setPrefSize(100, 20); //將Button的寬度和高度設置為100和20
然后創建HBox對象,代碼如下:
HBox hbox = new HBox(); //設置控件與 HBox 邊緣之間的距離
hbox.setPadding(new Insets(15, 12, 15, 12));
hbox.setSpacing(10); // 設置節點之間的間隔距離
hbox.setStyle("-fx-background-color: #336699;");//設置背景色
然后將兩個Button添加到HBox中,代碼如下:
hbox.getChildren().addAll(btOK, btCancel);
然后創建場景Scene對象,將場景對象添加到主舞台上,代碼如下:
Scene scene = new Scene(hbox, 200, 250);
primaryStage.setScene(scene);
最后,顯示主舞台,代碼如下:
primaryStage.show();
完整的代碼如下:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.scene.layout.HBox;
import javafx.geometry.Insets;
public class MyJavaFX extends Application {
@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
HBox hbox = new HBox();
hbox.setPadding(new Insets(15, 12, 15, 12));
hbox.setSpacing(10);
hbox.setStyle("-fx-background-color: #336699;");
Button btOK = new Button("OK");
btOK.setPrefSize(100, 20);
Button btCancel = new Button("Cancel");
btCancel.setPrefSize(100, 20);
hbox.getChildren().addAll(btOK, btCancel);
Scene scene = new Scene(hbox, 200, 250);
primaryStage.setTitle("MyJavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* The main method is only needed for the IDE with limited
* JavaFX support. Not needed for running from the command line.
*/
public static void main(String[] args) {
launch(args);
}
}
注意,如果要編譯和運行JavaFX程序,必須安裝JDK 8以上的版本。