JavaFX基礎:1: 簡介
Sun早在2007年就推出了JavaFX,作為客戶端體驗增強的一項特性,在被Oracle收購之後似乎變得可有可無,使用者的反饋也一直不溫不火。這篇文章中,我們來介紹一下JavaFX的基礎特性以及一個簡單的例子在IDEA中執行。
JavaFX的目的
JavaFX的FX是什麼的縮寫的問題,雖然這不重要,但是從其用途和目的來看:
- Fat-Client Extension:傳統方式下桌面應用,在Java中則是Swing的天下
- Flash & Flex:JavaFX主要用於建立RIA應用,而這正是Flash的長項。
能不能取代Flash這裡不談,作為技術的更新,替換Swing則還可能是一個可控制的方向。
功能特性
- FXML :JavaFX應用中以XML為基礎的使用者介面標記語言,在JavaFA應用中體現為.fxml檔案
- Scene Builder :可視的佈局設計工具,用於給使用者提供拖拽方式的介面設計方式。
- Swing Compatibility : 在JavaFX應用中,可以嵌入Swing內容
- CSS Styling: 可以使用CSS對應用進行渲染
- 豐富的API’s:提供豐富的API包括2D和3D圖形效果等。
…
架構設計
JavaFX的架構設計構成和關聯的元件如上圖所示,簡單說明如下:
JavaFX Public APIS and Scene Graph:進行整體介面功能與Scene特性的提供
Quantum toolkit:JavaFX高效能圖形化引擎
Glass Windowing toolkit:小型而搞笑的視窗化系統
Media engine:媒體引擎
Web engine:Web引擎
Java2D等:Java2D與OpenGL相關的圖形化功能支援
JavaFX應用利用JDK的API庫同時作為客戶端桌面應用,需要JVM的執行支援。
IDE
Oracle官方使用Netbean對JavaFX使用進行介紹,很多其他的IDE也同樣能達到效果,這裡使用IDEA進行說明,IDEA中直接建立Flex型別的Project, 選擇JDK,輸入專案名稱即可完成Sample工程的建立
IDEA生成的Sample程式碼會顯示一個窗體,在Sample中只設定了窗體的大小和標題,我們這裡對標題進行修改(顯示Hello Liumiao),對大小也進行修改(設定為600x600)
然後通過選單的右鍵執行即可確認效果。
注:實際執行的過程較為複雜,各種IDE之所以能夠正常執行,是因為其將所需要的jar都在classpath中進行了設定,比如上述sample執行時演示機的執行示例語句如下所示:
/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=53471:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/tools.jar:/Users/liumiao/Desktop/JavaFXSample/out/production/JavaFXSample sample.Main
參考文章
https://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm
相關文章
- SpringBoot基礎24_SpringBoot簡介1Spring Boot
- WebRTC基礎實踐-1.WebRTC簡介Web
- Spring AOP基礎簡介Spring
- 1、Oracle 基礎介紹Oracle
- CSS基礎知識簡介CSS
- JavaFx基礎操作【個人筆記】Java筆記
- RocketMQ系列1:基礎介紹MQ
- 【JS 口袋書】第 1 和 2 章:JS簡介及基礎JS
- web workers簡介(一)基礎使用Web
- python基礎學習-socket簡介Python
- iptables基礎原理和使用簡介
- C語言基礎-C簡介C語言
- d3-系列-基礎簡介
- CSS基礎:CSS變數簡介CSS變數
- 《MySQL 8 DBA基礎教程》簡介MySql
- GOLANG簡介與基礎語法Golang
- Java FX 簡介 與 IDEA JavaFX 開發入門JavaIdea
- C#基礎程式設計——簡介及基礎語法C#程式設計
- scrapy框架簡介和基礎應用框架
- TypeScript基礎入門-函式-簡介TypeScript函式
- 【Python基礎知識】Django框架簡介PythonDjango框架
- JAVA基礎之六-Stream(流)簡介Java
- 圖資料庫基礎簡介 -KDnuggets資料庫
- 併發程式設計基礎——JMM簡介程式設計
- Flutter檢視基礎簡介--Widget、Element、RenderObjectFlutterObject
- 小白nlp入門基礎(一)--nlp簡介
- 《Kubernetes零基礎快速入門》簡介
- 資料管理流程,基礎入門簡介
- 《java程式設計基礎》javaFX的佈局皮膚Java程式設計
- BookKeeper 介紹(1)--簡介
- Java基礎筆記09-陣列簡介Java筆記陣列
- NodeJS專案基礎結構簡單介紹NodeJS
- Flask(1)- 簡介Flask
- 1、LVGL簡介
- GaussDB資料庫基礎函式介紹1資料庫函式
- 【CSS】CSS簡介,CSS基礎選擇器詳解CSS
- Python基礎入門知識點——if 語句簡介Python
- 簡單介紹一下Component基礎佈局