快來使用JavaFX輕鬆撰寫Java GUI

Come to use JavaFX for easily writing Java GUI

Posted by imprld01 on Sunday, October 1, 2017

目錄


簡介

來源 由 Wikipedia

電腦的普及起源於電腦的方便使用。現在使用電腦十分容易,只要按一下開機鍵就可以開始登入電腦, 想要打開任何軟體只要點擊兩下就可以,回顧過去,曾經的電腦可是要輸入指令才能運作的, 有使用過PTT的讀者應該就能體會現今電腦的圖形化介面實在是十分友善。而寫程式不是只要將問題解答出來就好, 一個完美的資訊工作者應該要能兼顧解決問題的程式能力以及運用方法將結果呈現出來的能力, 像是你可以撰寫一個APP呈現結果,或者撰寫一個網站,亦或是撰寫一個視窗程式, 這些方式皆是十分有效的表現方式,比起呈現複雜的文字或者程式碼,人們對於圖形的接受度還是比較高。 目前許多語言都有一些套件可以撰寫圖形化介面,而圖形化介面實際上也是一門學問, 其中牽扯到使用者介面(User Interface, UI)以及使用者經驗(User Experience, UX)。

圖形化(Graphical):

  1. 使用者介面(User Interface):使用者接觸產品的部分,例如外觀(設計者專注於風格呈現)
  2. 使用者經驗(User Experience):使用者使用產品的感受,例如互動(設計者專注於流程體驗)

來源 由 Firmbee, pixabay.com

說到Java的視窗程式,無非就是使用Java AWT/Swing來開發視窗程式, 但是令人頭痛的是Java所提供的介面圖型並不好看,而且還要直接用撰寫程式碼的方式來開發, 光是要建構一個計算機的GUI就要耗上大半的開發時間,如果要微調或者更改設計, 就又要花大半的時間埋首於一堆程式碼中。 幸好Eclipse上有插件可以提供開發者使用拖拉的方式迅速完成GUI並產出相關的程式碼, 這樣便能方便開發者將精力放在解決困難的問題上,但是千萬別放棄使用Java開發視窗程式的念頭, 因為後來Oracle開發出更好使用的GUI套件-JavaFX。 JavaFX其實早在2008年就出現了,只是它並未內建在Java中,後來2014年Oracle公司發佈Java 8之後, JavaFX不再作為獨立的JavaFX SDK,而是直接內建在Java Runtime Environment(JRE)與Java Development Kit(JDK)中, 與傳統的AWT/Swing比較,JavaFX提供更多更好的工具與函式庫幫助開發者開發視窗程式,而且其程式效能更加快速、圖形更具現代感。

系統實作守則-MVC(Model-View-Controller):

  1. 邏輯的部分(Model):系統中處理的核心
  2. 顯示的部分(View):系統中的使用者介面
  3. 協調的部分(Controller):系統中負責轉介資料與處理核心

本篇的重點不在如何設計UI或UX,而是將重點放在設計階段之後的實作, 所以後續將會介紹使用Java建構一個視窗程式的基本概念。不過在實際介紹之前, 小編希望帶給各位系統實作的原則-MVC(Model-View-Controller)模式, 這是軟體工程(Software Engineering)中目前十分受歡迎並被廣泛接受的架構。 其中的Model注重於處理系統中解決問題的邏輯與演算法, View則注重於呈現系統中的使用者介面並接收使用者的資訊, 而Controller則是負責協調介於兩者之間的工作分配。

來源 由 Wikipedia

舉例來說,使用者在網頁的表單(View)上輸入帳號與密碼(Data), 依照網頁表單指定的方式將使用者輸入的帳號與密碼(Data)傳送至後台的程式(Controller)處理, 後台的程式(Controller)為了完成審核帳號與密碼的工作會呼叫其他程式(Model)來幫忙, 例如呼叫資料庫連結的程式碼、查詢帳號與密碼的程式碼、審核帳號與密碼的程式碼等, 最後由這些多個其他程式(Models)完成工作後,再由後台的程式(Controller)將結果傳回至網頁(View)上呈現。

MVC的概念就好比是現實職場上,客戶、經理與員工的角色與職責分配。 MVC的重點在於將系統中不同層面的工作區分開來, 目的在於建構具有系統性的系統架構,好處在於方便後續的維護與管理, 乃至於新相關程式碼的變更, 當然這樣的原則也能幫助開發者開發時能有清晰的架構與思維撰寫相對應的程式碼, 在團隊的分工合作上也是具有相當大的助益。

首先,我們先來回顧一下過去要如何使用Eclipse加速Java AWT/Swing的開發吧。

在Eclipse上開發Java AWT/Swing:環境安裝

下載準備

  1. Java Runtime Environment(JRE)
  2. Eclipse IDE for Java
  3. WindowBuilder
Step1

安裝Eclipse之前需要先行安裝JRE,讀者可以參考此篇

Step2

接著安裝Eclipse,安裝Eclipse的流程讀者可以參考此篇

Step3

WindowBuilder的官方網站上,選擇符合版本的Eclipse, 並在其下載連結上點擊右鍵,事先複製下載網址,該網址會在後續步驟中用到。 例如,這裡的Eclipse版本為4.7,所以這裡便複製該列Release Version的link, 由於該連結不存在,所以這裡就複製了Integration Version的link。

Step4

開啟Eclipse IDE,點選Help>Install New Software。

Step5

點選右邊的Add。

Step6

在Name欄位上填寫WindowBuilder,在Location欄位貼上步驟3複製下來的網址,然後按下OK。

Step7

將中間列出的所有套件勾選後按下Next。

Step8

確認所有即將安中的套件後按下Next。

Step9

選擇接受同意書內容後按下Finish。

Step10

等待安裝程序完成,最後點選Yes重新啟動Eclipse,WindowBuilder便安裝完成。

在Eclipse上開發Java AWT/Swing:初次使用

下載準備

  1. Java Runtime Environment(JRE)
  2. Eclipse IDE for Java
  3. WindowBuilder
Step1

開啟Eclipse。

Step2

新增一個新的Java專案。

Step3

為專案命名,小編命名的習慣是每個單詞首字大寫並使用減號隔開。

Step4

在專案中點擊右鍵,選擇New>Other。

Step5

在專案中新增WindowBuilder>Swing Designer>Application Window。

Step6

為應用程式命名,小編命名的習慣是每個單詞首字大寫並不用任何字元隔開。

Step7

可以見到基礎的程式碼已經產生。

Step8

轉換至Design模式後,可以見到對應的圖形化結果。

Step9

接下來開發者可以依照需求進行拖曳與配置。

Step10

拖曳之後,轉換回Source模式,可以發現對應的程式碼也被產生出來。讀者可以依照需求自行配置,乃至於撰寫相對應的核心程式。

在NetBeans上開始使用JavaFX:環境安裝

下載準備

  1. NetBeans IDE
  2. JavaFX Scene Builder 2.0
Step1

首先安裝NetBeans,安裝NetBeans的流程讀者可以參考此篇

Step2

接著至官方網站,選擇下載與系統環境相符的安裝執行檔,小編的環境是Windows x64,所以選擇javafx-scenebuilder-2_0-windows.msi。

Step3

找到電腦中下載完成的安裝執行檔,雙點擊該安裝執行檔。

Step4

點擊下一步開始設定安裝配置。

Step5

選擇並確認JavaFX Scene Builder的安裝路徑(預設路徑即可)後,點選安裝來啟動安裝程式。

Step6

等待安裝完成後,最後按下完成結束安裝,JavaFX Scene Builder便安裝完成。

在NetBeans上開始使用JavaFX:初次使用

下載準備

  1. NetBeans IDE
  2. JavaFX Scene Builder 2.0
Step1

開啟NetBeans。

Step5

新增專案。

Step5

選擇新增JavaFX FXML Application。

Step5

為應用程式命名,同時這也會式專案的名稱,小編命名的習慣是每個單詞首字大寫並不用任何字元隔開。

Step5

可以見到基礎的程式碼已經產生。

Step5

雙點擊FXML檔案便可以透過JavaFX Scene Builder開啟應用程式的圖形化介面,開發者可以隨需求進行拖曳與版面配置。

在Eclipse上開始使用JavaFX:環境安裝

下載準備

  1. Java Runtime Environment(JRE)
  2. Eclipse IDE for Java
  3. e(fx)clipse
  4. JavaFX Scene Builder 2.0
Step1

安裝Eclipse之前需要先行安裝JRE,讀者可以參考此篇

Step2

接著安裝Eclipse,安裝Eclipse的流程讀者可以參考此篇

Step3

複製此段網址:http://download.eclipse.org/efxclipse/updates-released/2.4.0/site ,該網址會在後續步驟中用到,其版本可於e(fx)clipse官方網站查得。

Step4

開啟Eclipse IDE,點選Help>Install New Software。

Step5

點選右邊的Add。

Step6

在Name欄位上填寫e(fx)clispe,在Location欄位貼上第3步驟複製下來的網址,最後按下OK。

Step7

將中間列出的所有套件勾選後按下Next。

Step8

確認所有即將安中的套件後按下Next。

Step9

選擇接受同意書內容後按下Finish。

Step10

等待安裝程序完成。

Step11

安裝完成後,點選Yes重新啟動Eclipse。

在Eclipse上開始使用JavaFX:初次使用

下載準備

  1. Java Runtime Environment(JRE)
  2. Eclipse IDE for Java
  3. e(fx)clipse
  4. JavaFX Scene Builder 2.0
Step1

開啟Eclipse IDE。

Step2

新增一個新的Java專案。

Step3

為專案命名,小編命名的習慣是每個單詞首字大寫並使用減號隔開。

Step4

在專案中點擊右鍵,選擇New>Other。

Step5

選擇New FXML Document,新增應用程式的使用者介面,這個檔案在MVC模式中扮演的是View。

Step6

為FXML檔案命名,小編命名的習慣是每個單詞首字大寫並不用任何字元隔開。

Step7

在專案中點擊右鍵,選擇New>Other,並選擇JavaFX Main Class,新增應用程式的起始進入點。

Step8

為檔案命名,小編命名的習慣是每個單詞首字大寫並不用任何字元隔開。

Step9

在Main Class中,可以發現類別繼承Application類別, 我們要做的是覆蓋父類別的start函式。 我們要告訴程式起始應載入的使用者介面,並將其顯示。

程式碼如下:

Parent root = FXMLLoader.load(getClass().getResource("MainPage.fxml"));

Scene scene = new Scene(root);

primaryStage.setScene(scene);
primaryStage.show();

Step10

在FXML檔案上點擊右鍵,選擇Open with SceneBuilder,可以透過JavaFX Scene Builder開啟應用程式的圖形化介面。

Step11

開發者可以透過JavaFX Scene Builder隨需求進行拖曳與版面配置。

Step12

小編拖曳AnchorPane為使用者介面的基底。

Step13

接著,小編拖曳一個按鈕在使用者介面上,並將此介面存檔。

Step14

配置完使用者介面後,我們可以看到原本的FXML檔案自動產生一些程式碼了。

Step15

接著,我們可以再按下右鍵新增Java Class。

Step16

為類別命名,小編命名的習慣是每個單詞首字大寫並不用任何字元隔開。

Step17

接著,在這個類別上實作Initializable類別,這個類別扮演的是MVC模式中的Controller,開發者可以在該類別中實作事件處理函式。

Step18

基本上的應用程式架構便建立完成,讀者可以直接運行應用程式,後續讀者可以再依需求建立需要的類別最為MVC模式中的Model。


comments powered by Disqus