Java 8新特性探究(十三)JavaFX 8新特性以及開發2048遊戲

JavaFX主要致力於富客戶端開發,以彌補swing的缺陷,主要提供圖形庫與media庫,支持audio,video,graphics,animation,3D等,同時採用現代化的css方式支持界面設計。同時又採用XUI方式以XML方式設計UI界面,達到顯示與邏輯的分離。與android這方面確實有點類似性。 ##JavaFX歷史##css

跟java在服務器端和web端成績相比,桌面一直是java的軟肋,因而Sun公司在2008年推出JavaFX,彌補桌面軟件的缺陷,請看下圖JavaFX一路走過來的改進 歷史 從上圖看出,一開始推出時候,開發者需使用一種名爲JavaFX Script的靜態的、聲明式的編程語言來開發JavaFX應用程序。由於JavaFX Script將會被編譯爲Java bytecode,程序員可使用Java代碼代替。 JavaFX 2.0以後的版本摒棄了JavaFX Script語言,而做爲一個Java API來使用。所以使用JavaFX平臺實現的應用程序將直接經過標準Java代碼來實現。 JavaFX 2.0 包含很是豐富的 UI 控件、圖形和多媒體特性用於簡化可視化應用的開發,WebView可直接在應用中嵌入網頁;另外 2.0 版本容許使用 FXML 進行 UI 定義,這是一個腳本化基於 XML 的標識語言。 從JDK 7u6開始,JavaFx就與JDK捆綁在一塊兒了,JavaFX團隊稱,下一個版本將是8.0,目前全部的工做都已經圍繞8.0庫進行。這是由於JavaFX將捆綁在Java 8中,所以該團隊決定跳過幾個版本號,迎頭遇上Java 8。 ##JavaFx8的新特性 ## ###全新現代主題:Modena 新的Modena主題來替換原來的Caspian主題。不過在Application的start()方法中,能夠經過setUserAgentStylesheet(STYLESHEET_CASPIAN)來繼續使用Caspian主題。 在此輸入圖片描述 參考http://fxexperience.com/2013/03/modena-theme-update/ ###JavaFX 3D 在JavaFX8中提供了3D圖像處理API,包括Shape3D (Box, Cylinder, MeshView, Sphere子類),SubScene, Material, PickResult, LightBase (AmbientLight 和PointLight子類),SceneAntialiasing等。Camera類也獲得了更新。從JavaDoc中能夠找到更多信息。 在此輸入圖片描述 ###富文本 強化了富文本的支持 在此輸入圖片描述 ###TreeTableView 在此輸入圖片描述 ###日期控件DatePicker 增長日期控件 在此輸入圖片描述 ###用於 CSS 結構的公共 APIjava

  1. CSS 樣式設置是 JavaFX 的一項主要特性
  2. CSS 已專門在私有 API 中實現(com.sun.javafx.css 軟件包)
  3. 多種工具(例如 Scene Builder)須要 CSS 公共 API
  4. 開發人員將可以定義自定義 CSS 樣式

###WebView 加強功能android

  1. Nashorn JavaScript 引擎 https://blogs.oracle.com/nashorn/entry/open_for_business
  2. WebSocket http://javafx-jira.kenai.com/browse/RT-14947
  3. Web Workers http://javafx-jira.kenai.com/browse/RT-9782

##JavaFX Scene Builder 2.0 可視化工具,加速JavaFX圖形界面的開發,下載地址 JavaFX Scene Builder如同NetBeans通常,經過拖拽的方式配置界面,待完成界面之後,保存爲FXML格式文件,此文件以XML描述物件配置,再交由JavaFX程式處理,所以可減少直接以JavaFX編寫界面的困難度。 JavaFX Scene Builder 2.0新增JavaFX Theme預覽功能,菜單「Preview」→「JavaFX Theme」選擇不一樣的主題,包括:ios

  • Modena (FX8).
  • Modena Touch (FX8).
  • Modena High Contrast – Black on White (FX8).
  • Modena High Contrast – White on Black (FX8).
  • Modena High Contrast – Yellow on Black (FX8).
  • Caspian (FX2).
  • Caspian Embedded (FX2).
  • Caspian Embedded QVGA (FX2).

##JavaFX 8開發2048遊戲 2048雖然不像前段時間那麼火了,但我的仍是很是喜歡玩2048,空閒時間都忍不住來一發,感謝 Gabriele Cirulli 發明了這了不得 (而且會上癮)的2048遊戲,由於是用MIT協議開源出來,各類語言版本的2048遊戲橫空出世,下圖是用JavaFX 8來開發的一款2048。 遊戲截圖 ###所用到的技術git

  • Lambda expressions
  • Stream API
  • JavaFX 8
  • JavaFX CSS basics
  • JavaFX animations ###fx2048相關類的說明
  • Game2048,遊戲主類
  • GameManager,包含遊戲界面佈局(Board)以及Grid的操做(GridOperator)
  • Board,包含labels ,分數,grid ,Tile
  • Tile,遊戲中的數字塊
  • GridOperator,Grid操做類
  • Location,Direction 位置幫助類
  • RecordManager,SessionManager,紀錄遊戲分數,會話類

這裏是源碼地址,你們感興趣的能夠去學習下程序員

##總結## 以上的相關源碼都託管在 這裏。 比起AWT和SWING,JavaFX的優點很明顯,各大主流IDE已經支持JavaFX的開發了,最佳的工具莫過於NetBeans,且隨着lambda帶來的好處,JavaFX的事件處理簡潔了很多,之前須要寫匿名函數類。另外JavaFX開源以來,JavaFX的生態環境也愈來愈活躍了,包括各類教程,嵌入式嘗試,還有一些開源項目,好比:ControlsFX,JRebirth,DataFX Flow,mvvmFX,TestFX 等等。還有JavaFX是能夠運行在Android和ios上面,這個很贊! 好了,總結到這裏也差很少了,在RIA平臺上面,有HTML五、Flex和微軟的Sliverlight,JavaFX可否表現優秀,在於你們的各位,只要咱們多用JavaFX,那麼JavaFX也會愈來愈優秀,任何語言都是這樣, THE END .web

##JavaFX歷史##express

跟java在服務器端和web端成績相比,桌面一直是java的軟肋,因而Sun公司在2008年推出JavaFX,彌補桌面軟件的缺陷,請看下圖JavaFX一路走過來的改進 歷史 從上圖看出,一開始推出時候,開發者需使用一種名爲JavaFX Script的靜態的、聲明式的編程語言來開發JavaFX應用程序。由於JavaFX Script將會被編譯爲Java bytecode,程序員可使用Java代碼代替。 JavaFX 2.0以後的版本摒棄了JavaFX Script語言,而做爲一個Java API來使用。所以使用JavaFX平臺實現的應用程序將直接經過標準Java代碼來實現。 JavaFX 2.0 包含很是豐富的 UI 控件、圖形和多媒體特性用於簡化可視化應用的開發,WebView可直接在應用中嵌入網頁;另外 2.0 版本容許使用 FXML 進行 UI 定義,這是一個腳本化基於 XML 的標識語言。 從JDK 7u6開始,JavaFx就與JDK捆綁在一塊兒了,JavaFX團隊稱,下一個版本將是8.0,目前全部的工做都已經圍繞8.0庫進行。這是由於JavaFX將捆綁在Java 8中,所以該團隊決定跳過幾個版本號,迎頭遇上Java 8。 ##JavaFx8的新特性 ## ###全新現代主題:Modena 新的Modena主題來替換原來的Caspian主題。不過在Application的start()方法中,能夠經過setUserAgentStylesheet(STYLESHEET_CASPIAN)來繼續使用Caspian主題。 在此輸入圖片描述 參考http://fxexperience.com/2013/03/modena-theme-update/ ###JavaFX 3D 在JavaFX8中提供了3D圖像處理API,包括Shape3D (Box, Cylinder, MeshView, Sphere子類),SubScene, Material, PickResult, LightBase (AmbientLight 和PointLight子類),SceneAntialiasing等。Camera類也獲得了更新。從JavaDoc中能夠找到更多信息。 在此輸入圖片描述 ###富文本 強化了富文本的支持 在此輸入圖片描述 ###TreeTableView 在此輸入圖片描述 ###日期控件DatePicker 增長日期控件 在此輸入圖片描述 ###用於 CSS 結構的公共 API編程

  1. CSS 樣式設置是 JavaFX 的一項主要特性
  2. CSS 已專門在私有 API 中實現(com.sun.javafx.css 軟件包)
  3. 多種工具(例如 Scene Builder)須要 CSS 公共 API
  4. 開發人員將可以定義自定義 CSS 樣式

###WebView 加強功能windows

  1. Nashorn JavaScript 引擎 https://blogs.oracle.com/nashorn/entry/open_for_business
  2. WebSocket http://javafx-jira.kenai.com/browse/RT-14947
  3. Web Workers http://javafx-jira.kenai.com/browse/RT-9782

##JavaFX Scene Builder 2.0 可視化工具,加速JavaFX圖形界面的開發,下載地址 JavaFX Scene Builder如同NetBeans通常,經過拖拽的方式配置界面,待完成界面之後,保存爲FXML格式文件,此文件以XML描述物件配置,再交由JavaFX程式處理,所以可減少直接以JavaFX編寫界面的困難度。 JavaFX Scene Builder 2.0新增JavaFX Theme預覽功能,菜單「Preview」→「JavaFX Theme」選擇不一樣的主題,包括:

  • Modena (FX8).
  • Modena Touch (FX8).
  • Modena High Contrast – Black on White (FX8).
  • Modena High Contrast – White on Black (FX8).
  • Modena High Contrast – Yellow on Black (FX8).
  • Caspian (FX2).
  • Caspian Embedded (FX2).
  • Caspian Embedded QVGA (FX2).

##JavaFX 8開發2048遊戲 2048雖然不像前段時間那麼火了,但我的仍是很是喜歡玩2048,空閒時間都忍不住來一發,感謝 Gabriele Cirulli 發明了這了不得 (而且會上癮)的2048遊戲,由於是用MIT協議開源出來,各類語言版本的2048遊戲橫空出世,下圖是用JavaFX 8來開發的一款2048。 遊戲截圖 ###所用到的技術

  • Lambda expressions
  • Stream API
  • JavaFX 8
  • JavaFX CSS basics
  • JavaFX animations ###fx2048相關類的說明
  • Game2048,遊戲主類
  • GameManager,包含遊戲界面佈局(Board)以及Grid的操做(GridOperator)
  • Board,包含labels ,分數,grid ,Tile
  • Tile,遊戲中的數字塊
  • GridOperator,Grid操做類
  • Location,Direction 位置幫助類
  • RecordManager,SessionManager,紀錄遊戲分數,會話類

這裏是源碼地址,你們感興趣的能夠去學習下

##總結## 以上的相關源碼都託管在 這裏。 比起AWT和SWING,JavaFX的優點很明顯,各大主流IDE已經支持JavaFX的開發了,最佳的工具莫過於NetBeans,且隨着lambda帶來的好處,JavaFX的事件處理簡潔了很多,之前須要寫匿名函數類。另外JavaFX開源以來,JavaFX的生態環境也愈來愈活躍了,包括各類教程,嵌入式嘗試,還有一些開源項目,好比:ControlsFX,JRebirth,DataFX Flow,mvvmFX,TestFX 等等。還有JavaFX是能夠運行在Android和ios上面,這個很贊! 好了,總結到這裏也差很少了,在RIA平臺上面,有HTML五、Flex和微軟的Sliverlight,JavaFX可否表現優秀,在於你們的各位,只要咱們多用JavaFX,那麼JavaFX也會愈來愈優秀,任何語言都是這樣, THE END .

相關文章
相關標籤/搜索