Java FX 簡介 與 IDEA JavaFX 開發入門

蚩尤後裔發表於2018-06-22

目錄

Java FX 簡介

Hello Friend

Hello World


本文環境:IDEA 14 + Java JDK 1.8

Java FX 簡介

1、JavaFX 是一個強大的圖形和多媒體處理工具包集合,它允許開發者來設計、建立、除錯和部署富客戶端程式,並且和 Java 一樣跨平臺。

2、Javafx 是 Oracle 在2008年主推的下一代 GUI 框架,功能強大,並且持續更新

3、Swing 是Java 比較老的GUI,樣式難被使用者接受,且 Oracle已經明確說明不再更新Swing。顯然比swing更古老的awt就更不用說了

4、JavaFX 仍然可以使用 Swing 程式,通過SwingNode即可

5、原來開發 JavaFX 程式,需要單獨下載 JavaFX 的SDK,但是現在不需要了。從 JDK 7u6 開始,JavaFX 被內建到 Java SE中;從Java8開始,JavaFX 版本更新為JavaFX8。現在開發Java FX程式可以像以前開發awt、swing一樣直接進行開發

Java FX 歷史

    JavaFX 即可以用來開發桌面程式也可以開發移動裝置上的程式,但移動應用平臺都有自己的SDK,比如開發Android和ISO應用都會使用原生地API,所以JavaFX目前主要用於開發桌面應用程式!
    JavaFX 2.0之後的版本摒棄了JavaFX Script語言,而作為一個Java API來使用。因此使用JavaFX平臺實現的應用程式將直接通過標準Java程式碼來實現。
    從JDK 7u6 開始,JavaFX被內建到Java SE中,原來開發JavaFX程式,需要單獨下載JavaFX的SDK,但現在不需要了。
    從Java JDK8 開始,JavaFX的版本也更新為JavaFX8。

6、學習網址

JavaFX中文網:http://www.javafxchina.net/main/

易百教程:https://www.yiibai.com/javafx/

Hello Friend

建立Java SE專案

程式碼實現

/**
 * Created by Administrator on 2018/6/22 0022.
 * 下面這些javafx.*下面的API都是JDK8、JRE8中內建好的,直接呼叫即可
 */
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;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * Java作為GUI(圖形化使用者介面)程式
 * 1、入口必須繼承Application抽象類
 */
public class HelloFriend extends Application {
    /**
     * atomicInteger:用於統計使用者單擊按鈕的次數
     */
    private static AtomicInteger atomicInteger = new AtomicInteger(0);

    /**
     * 2、然後實現的它的start抽象方法
     *
     * @param primaryStage
     */
    @Override
    public void start(Stage primaryStage) {

        /**建立一個按鈕控制元件
         * 並設定按鈕上的文字,同時為他繫結單擊事件,滑鼠點選按鈕後,控制檯輸出"Hello Friend"*/
        Button btn = new Button();
        btn.setText("Say 'Hello Friend'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println(atomicInteger.addAndGet(1) + ":Hello Friend");
            }
        });

        /**建立一個堆疊皮膚,皮膚包含控制元件*/
        StackPane root = new StackPane();
        root.getChildren().add(btn);

        /**建立一個場景,場景包含皮膚*/
        Scene scene = new Scene(root, 300, 250);

        /**最後將場景放入到舞臺中,舞臺包含場景<-場景包含皮膚<-皮膚包含控制元件*/
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(scene);
        /**顯示*/
        primaryStage.show();
    }

    public static void main(String[] args) {
        /**
         * GUI程式必須從入口的main方法進入並啟動
         * launch是Application中的,呼叫它則可啟動此GUI程式了
         */
        launch(args);
    }
}

效果演示

Hello World

1、上面是使用 Java SE 的方式開發的 JavaFX 應用,完全是可以的,然而 JavaFX 作為一個強大的類庫,有著自己的架構,很多內容也是固定的。

2、如同可以直接開發安卓專案一樣,IDEA 也可以直接建立 JavaFX 應用

3、如果不使用 JavaSE 方式開發 JavaFX 的話,Eclipse 要安裝外掛才可以,但是 IDEA 直接可以開發

建立 JavaFX 應用

Controller:預設這個類裡面是空的
Main:為整個應用的程式入口
sample.fxml:這是應用視窗的佈局檔案,也可以叫資原始檔

Controller 預設內容是空的:

public class Controller {
}

sample.fxml 是視窗的佈局檔案,可以看到下面的 <GridPane> 網格皮膚標籤關聯了上面 的Controller 類

<?import javafx.scene.layout.GridPane?>
<GridPane fx:controller="sample.Controller"
          xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>

Main 入口類可以看到整個視窗預設是從佈局檔案進行載入佈局的,然後設定了視窗的標題以及大小,但因為佈局檔案中沒有定義內容,所以應用啟動之後,視窗是空的。

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

執行效果

 

相關文章