十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Java富客戶端平臺(tái)JavaFX如何創(chuàng)建框架,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營(yíng)理念,通過(guò)多達(dá)10多年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:LED顯示屏等企業(yè),備受客戶夸獎(jiǎng)。
未來(lái)JavaFX希望在渲染方面具備通用的抽象能力,無(wú)論是針對(duì)Java 2D/OpenGL/Hospot VM框架或是Javascript/HTML5/Web瀏覽器框架,都可以使用同樣的API來(lái)實(shí)現(xiàn)。
JavaFX最早有兩個(gè)主要的組成部分:JavaFX腳本和JavaFX移動(dòng)。JavaFX的核心是JavaFX腳本,它是一種聲明型的腳本語(yǔ)言。它與Java類(lèi)保持了高度的交互性。JavaFX移動(dòng)(JavaFX Mobile),是用來(lái)為移動(dòng)設(shè)備開(kāi)發(fā)Java應(yīng)用的平臺(tái)。然而,后來(lái)Oracle宣布了JavaFX腳本被廢棄,替換它的是一種新的Java API,用來(lái)構(gòu)建JavaFX應(yīng)用,當(dāng)然,也可能從類(lèi)似JRuby,Clojure,Scala和Groovy等語(yǔ)言中選取代替者。正當(dāng)我猶豫是否將學(xué)習(xí)重心轉(zhuǎn)移到JavaFX上時(shí),2011年JavaFX的發(fā)展前景給我注入了一種強(qiáng)心劑,讓我下定決心來(lái)好好學(xué)些JavaFX2.0。
一、什么是JavaFX?
JavaFX平臺(tái)是Java客戶端平臺(tái)的演進(jìn),用于幫助程序開(kāi)發(fā)人員快速創(chuàng)建和部署富客戶端應(yīng)用程序,實(shí)現(xiàn)跨平臺(tái)的一致性。JavaFX平臺(tái)基于Java技術(shù),提供了一系列的圖表和多媒體API,用于簡(jiǎn)化數(shù)據(jù)驅(qū)動(dòng)的企業(yè)客戶端應(yīng)用程序的開(kāi)發(fā)。
對(duì)于Java開(kāi)發(fā)人員而言,JavaFX平臺(tái)具有以下優(yōu)勢(shì):
1、由于JavaFX平臺(tái)是用Java語(yǔ)言編寫(xiě)的,Java開(kāi)發(fā)人員可以充分利用他們已有的技能和工具來(lái)開(kāi)發(fā)JavaFX應(yīng)用程序。
2、由于Java被廣泛使用,有經(jīng)驗(yàn)的Java開(kāi)發(fā)人員能夠快速高效地開(kāi)發(fā)JavaFX應(yīng)用程序。
3、通過(guò)使用服務(wù)器和客戶端平臺(tái)上的Java技術(shù),JavaFX平臺(tái)通過(guò)減少業(yè)務(wù)解決方案的復(fù)雜性來(lái)減低了投資風(fēng)險(xiǎn)。
4、基于以上幾點(diǎn)優(yōu)勢(shì),開(kāi)發(fā)費(fèi)用也有所減低。
5、JavaFX平臺(tái)為廣大開(kāi)發(fā)人員提供了開(kāi)發(fā)框架和運(yùn)行時(shí)環(huán)境,用于創(chuàng)建企業(yè)業(yè)務(wù)應(yīng)用程序,同時(shí)支持Java實(shí)現(xiàn)跨平臺(tái)。
二、JavaFX現(xiàn)狀發(fā)展: JavaFX 2.0發(fā)布
在JavaOne 2011大會(huì)上,甲骨文在宣布推出Windows 平臺(tái)上的JavaFX 2.0版本的同時(shí),也發(fā)布了Mac OS X平臺(tái)上的開(kāi)發(fā)者預(yù)覽版JavaFX 2.0。
JavaFX 2.0 是 JavaFX 一個(gè)主要的升級(jí)版本,為下一代的 UI 平臺(tái)而設(shè)計(jì),提供強(qiáng)大的基于Java 的UI 設(shè)計(jì)能力,可處理大規(guī)模數(shù)據(jù)驅(qū)動(dòng)的商業(yè)邏輯。JavaFX 2.0 包含非常豐富的UI 控件、圖形和多媒體特性,可用于簡(jiǎn)化可視化應(yīng)用的開(kāi)發(fā),新增的 WebView 可直接在應(yīng)用中嵌入網(wǎng)頁(yè);另外 2.0 版本允許使用 FXML 進(jìn)行 UI 定義,這是一個(gè)腳本化基于XML 的標(biāo)識(shí)語(yǔ)言。
JavaTM SE 7 Update 2 包含了新的JVM,用來(lái)提高可靠性和性能,支持Oracle Solaris 11和Firefox 5以及更高版本。Java SE包含了JavaFX,Java JDK包含了JavaFX SDK以及JavaFX運(yùn)行時(shí)環(huán)境。
本月初適用于Windows平臺(tái)上的JavaFX 2.1開(kāi)發(fā)者預(yù)覽版可供下載,該版本包含了新的圖表和復(fù)合框控件。
三、如何創(chuàng)建應(yīng)用程序框架
JavaFX應(yīng)用程序都有一個(gè)相似的框架。Main()函數(shù)調(diào)用Launch()函數(shù),Start()方法用于設(shè)置應(yīng)用程序的UI設(shè)計(jì)。
如何使用NetBeans 7.1來(lái)創(chuàng)建JavaFX項(xiàng)目
1、下載安裝JavaFX 2.0 SDK。我安裝文件的默認(rèn)路徑是C:\Program Files\Oracle\JavaFX 2.0 SDK、C:\Program Files\Oracle\JavaFX Runtime 2.0.
雖然通過(guò)命令行的方式可以運(yùn)行JavaFX應(yīng)用程序,但是我準(zhǔn)備用NetBeans來(lái)構(gòu)建我的***個(gè)程序。NetBeans 7.1 beta支持JavaFX 2.0,而JavaFX 2.0 SDK需要單獨(dú)下載。
我下載了NetBeans 7.1 beta所有版本,因?yàn)镴ava SE、JavaFX都能支持Groovy、Java EE、PHP以及C/C++來(lái)創(chuàng)建桌面、Web以及移動(dòng)應(yīng)用程序。目前的NetBeans IDE支持Windows、 Mac、Linux 以及 Oracle Solaris平臺(tái)。它支持Java平臺(tái)中的***規(guī)則和標(biāo)準(zhǔn)。而且,NetBeans IDE 7.1 Beta除了支持Java標(biāo)準(zhǔn)外,還支持JavaFX 2.0,并且對(duì)JavaFX 2.0應(yīng)用程序可以進(jìn)行完整的編譯、調(diào)試和監(jiān)測(cè)。
2、在NetBeans 7.1中創(chuàng)建了一個(gè)新的JavaFX項(xiàng)目。創(chuàng)建項(xiàng)目有兩種方法。
“CTRL+SHIFT+N”
右鍵“項(xiàng)目”選項(xiàng)卡,選擇“新建項(xiàng)目”
注:***次在新安裝的NetBeans 7.1beta版本中創(chuàng)建JavaFX項(xiàng)目時(shí)需要激活。
3、一旦點(diǎn)擊“完成”按鈕創(chuàng)建完JavaFX項(xiàng)目后,就會(huì)生成三個(gè)文件。這些文件包括HelloJavaFX.java、Sample.java以及 Sample.fxml。
在項(xiàng)目上點(diǎn)擊“生成”按鈕后,就可以看到NetBeans 7.1 beta生成什么樣的文件。
在'dist'目錄下,可以使用JAR和JNLP文件來(lái)生成HTML文件。
四、如何使用內(nèi)置的布局面板
JavaFX應(yīng)用程序支持手動(dòng)設(shè)置UI布局,可以為每個(gè)UI元素來(lái)設(shè)置合適的位置和大小屬性,而最簡(jiǎn)單的方法是充分利用布局面板。JavaFX SDK提供了幾個(gè)布局容器類(lèi),稱(chēng)之為面板,用于輕松創(chuàng)建和管理一些經(jīng)典的布局,比如行、列、棧等。作為調(diào)整后的窗口,布局面板可以根據(jù)節(jié)點(diǎn)的屬性來(lái)靈活自動(dòng)調(diào)整位置和大小。
使用JavaFX提供的布局面板如下:
1、BorderPane
BorderPane布局面板提供了五個(gè)區(qū)域來(lái)放置節(jié)點(diǎn):上下左右中。圖1-1顯示了布局類(lèi)型,可以用來(lái)創(chuàng)建邊框面板,可以靈活調(diào)整區(qū)域大小。
邊框面板可以用于創(chuàng)建頂部經(jīng)典的工具條,底部狀態(tài)欄,左端導(dǎo)航欄面板,右邊額外信息,中間的工作區(qū)。
以下代碼為如何在每個(gè)區(qū)域里創(chuàng)建一個(gè)多邊形邊框面板
Example 1-1 Create a Border Pane BorderPane layout = new BorderPane(); layout.setTop(new Rectangle(200, 50, Color.DARKCYAN)); layout.setBottom(new Rectangle(200, 50, Color.DARKCYAN)); layout.setCenter(new Rectangle(100, 100, Color.MEDIUMAQUAMARINE)); layout.setLeft(new Rectangle(50, 100, Color.DARKTURQUOISE)); layout.setRight(new Rectangle(50, 100, Color.DARKTURQUOISE));
2、Hbox
Hbox布局面板提供了一種簡(jiǎn)單的方法來(lái)調(diào)整單行中的節(jié)點(diǎn)。
Padding屬性可以用來(lái)設(shè)置節(jié)點(diǎn)和Hbox面板之間的間距。Spacing屬性可以用來(lái)管理節(jié)點(diǎn)之間的距離。可以調(diào)整背景色來(lái)調(diào)整風(fēng)格。
以下示例為使用Hbox面板來(lái)創(chuàng)建一個(gè)工具條,包含兩個(gè)按鈕
Example 1-2 Create an HBox Pane HBox hbox = new HBox(); hbox.setPadding(new Insets(15, 12, 15, 12)); hbox.setSpacing(10); hbox.setStyle("-fx-background-color: #336699"); Button buttonCurrent = new Button("Current"); buttonCurrent.setPrefSize(100, 20); Button buttonProjected = new Button("Projected"); buttonProjected.setPrefSize(100, 20); hbox.getChildren().addAll(buttonCurrent, buttonProjected); BorderPane border = new BorderPane(); border.setTop(hbox);
3、VBox
VBox布局面板與Hbox布局面板相似。Padding屬性可以用來(lái)調(diào)整節(jié)點(diǎn)和VBox面板邊緣的間距。Spacing屬性用于調(diào)整節(jié)點(diǎn)之間的間距。
Example 1-3 Create a VBox Pane VBox vbox = new VBox(); vbox.setPadding(new Insets(10, 10, 10, 10)); vbox.setSpacing(10); Text title = new Text("Data"); title.setFont(Font.font("Amble CN", FontWeight.BOLD, 14)); vbox.getChildren().add(title); Text options[] = new Text[] { new Text(" Sales"), new Text(" Marketing"), new Text(" Distribution"), new Text(" Costs")}; for (int i=0; i<4; i++) { vbox.getChildren().add(options[i]); } border.setLeft(vbox); // Add to BorderPane from Example 1-2
4、GridPane
GridPane布局面板允許你創(chuàng)建一個(gè)靈活的網(wǎng)格,在行列中靈活調(diào)整節(jié)點(diǎn)的布局。
網(wǎng)格可以按照需要在單元格中靈活放置節(jié)點(diǎn)。網(wǎng)格面板適用于創(chuàng)建由行列組成的表格,圖1-8顯示了網(wǎng)格面板,包含了圖標(biāo)、標(biāo)題、副標(biāo)題、文本和餅圖。gridLinesVisible屬性可以用來(lái)顯示網(wǎng)格線條,顯示行和列。
Example 1-5 Create a Grid Pane GridPane grid = new GridPane(); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(0, 0, 0, 10)); // Category in column 2, row 1 Text category = new Text("Sales:"); category.setFont(Font.font("Tahoma", FontWeight.BOLD, 20)); grid.add(category, 1, 0); // Title in column 3, row 1 Text chartTitle = new Text("Current Year"); chartTitle.setFont(Font.font("Tahoma", FontWeight.BOLD, 20)); grid.add(chartTitle, 2, 0); // Subtitle in columns 2-3, row 2 Text chartSubtitle = new Text("Goods and Services"); grid.add(chartSubtitle, 1, 1, 2, 1); // House icon in column 1, rows 1-2 ImageView imageHouse = new ImageView( new Image(LayoutSample.class.getResourceAsStream("graphics/house.png"))); grid.add(imageHouse, 0, 0, 1, 2); // Left label in column 1 (bottom), row 3 Text goodsPercent = new Text("Goods\n80%"); GridPane.setValignment(goodsPercent, VPos.BOTTOM); grid.add(goodsPercent, 0, 2); // Chart in columns 2-3, row 3 ImageView imageChart = new ImageView( new Image(LayoutSample.class.getResourceAsStream("graphics/piechart.png"))); grid.add(imageChart, 1, 2, 2, 1); // Right label in column 4 (top), row 3 Text servicesPercent = new Text("Services\n20%"); GridPane.setValignment(servicesPercent, VPos.TOP); grid.add(servicesPercent, 3, 2); border.setCenter(grid); // Add to BorderPane from Example 1-2
五、JavaFX應(yīng)用程序成功示例演示
1、Ensemble
Ensemble提供了一系列的應(yīng)用程序來(lái)展示JavaFX的不同特征,比如動(dòng)畫(huà)、圖表、以及控件。
2、Sales Dashboard
這是Henley汽車(chē)公司的一個(gè)客戶端-服務(wù)器模式的應(yīng)用程序。使用JavaDB,可以在EJB服務(wù)器上模擬汽車(chē)的銷(xiāo)售??梢酝ㄟ^(guò)Derbu和web服務(wù)來(lái)獲取數(shù)據(jù)信息。通過(guò)混合使用FXML和JavaFX,客戶端可以掩飾各種不同的數(shù)據(jù)。
3、SwingInterop Sample
Swing應(yīng)用程序能夠顯示如何有效組合Swing和JavaFX。它可以使用JavaFX組件在一個(gè)選項(xiàng)卡中實(shí)現(xiàn)圖表和表單,再另一個(gè)選項(xiàng)卡中顯示由JavaFX實(shí)現(xiàn)的簡(jiǎn)單瀏覽器。
上述就是小編為大家分享的Java富客戶端平臺(tái)JavaFX如何創(chuàng)建框架了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。