/**
寫這篇文章之前我先google了一下JavaFX的接受度,結(jié)果一篇文章跳進(jìn)我的視線:(2007年8月)Michael Urban寫的:為什么沒人對JavaFX感興趣?(原文:
JavaFX: How Much Interest Is there?)。國外尚且如此,國內(nèi)FX的環(huán)境就可想而知了。看來為了繼續(xù)推廣JavaFX,Sun還需更多的工作去做。文章在最后說:我們作為Java族的一員是否該為增加JavaFX的興趣度而做點什么呢?呵呵,應(yīng)該的啦,所以就準(zhǔn)備寫寫JavaFX的文章了。
原創(chuàng):西門町學(xué)士
*/
JavaFX出來已經(jīng)很長一段時間了。一直在計劃跟進(jìn),可是因為比較懶,現(xiàn)在才慢慢地學(xué)習(xí)。這里就暫做做學(xué)習(xí)總結(jié)的地方吧。
雖
然是總結(jié),我還是打算寫詳細(xì)一點。本來我對JavaFX了解也不是很多,有的東西還要在網(wǎng)上查證了才能寫(比較JavaFX是如何誕生,如何從F3變成
JavaFX的)。今天要寫的主要是:1、JavaFX的前世今生;(了解了它的歷史也就了解了它是什么,它的發(fā)展方向,呵呵)2、如何擁有
JavaFX;(知道從哪里去下載開發(fā)工具,如何配置它)3、Hello JavaFX World(當(dāng)然,一個經(jīng)典的Hello
World是不能少的)
1、前世今生
如果你抱有太高的期望,希望在這里把JavaFX弄得清清楚楚,恐怕你要失望了。說實話,我也不清楚。甚至有人建議我從Applet開始講,Oh NO!!
這
里,我不準(zhǔn)備講DSL,也不打算講Swing。我能想到的開頭就是:一個叫Chris
Oliver的家伙,覺得用Java語言(以及差不多的語言,包括VCVBDelphiC#)做GUI開發(fā)太蹩腳了。他覺得開發(fā)GUI應(yīng)該是采用聲明式的
語言(比如:上帝說,要有光。于是有了光),而且還非常英明地放棄了當(dāng)時(以及現(xiàn)在)流行的XML方式(MS和Mozilla都走了這條道),于是,他開
發(fā)了F3。為什么叫F3呢,因為他當(dāng)時想的是Form Follows
Function,3個F。從名字可以看出,目標(biāo)就是Form,說白了就是GUI。它的語法很符合GUI的本質(zhì)(而且如果你碰巧還接觸過VRML的話,你
會覺得非常習(xí)慣)。由于當(dāng)今的世界是DSL大行其道的世界,于是F3得到的關(guān)注越來越多,到了2007年的JavaOne上,Sun正式宣布將F3整編成
Java大家族的一員大將,并改名叫做JavaFX。(想知道更多可以去Chris在Sun的
blog)
2、如何擁有
首先保證你有Java SE在你的電腦上,如果你不知道什么是JDK,讓你看到這里是我的錯。
JavaFX的大本營是java.net,具體位置是https://openjfx.dev.java.net/。Sun還另開了一個javafx.com,用來推介JavaFX。(有點類似于java.net和java.com的作用)。
最
開始的JavaFX是解釋性執(zhí)行的,用文本編輯器寫好代碼后就可以直接運行。為了提高執(zhí)行效率,現(xiàn)在又開發(fā)了編譯器,用于把JavaFX代碼編譯成
bytecode,即class文件。這個class文件和用jdk編譯的Java得到的class是一樣的。當(dāng)然,它的運行是需要JavaFX庫的支持
的。估計今后的JavaFX都是采用編譯后運行。
到大本營后按頁面的鏈接去下載最新的JavaFX。目前的版本是javafxc編譯器的Milestone 3,地址是:
http://openjfx.java.sun.com/builds/javafxc-M3/。下載回來后直接解壓縮就OK了。這里我們解壓縮釋放在D:\openjfx目錄下。現(xiàn)在你就擁有JavaFX的全部了:編譯器、運行時庫、示例Demo、幫助文檔等等。
另
外,為了方便開發(fā),我們還有另外一種獲取JavaFX的方式,通過IDE的JavaFX
plugin。同樣,在java.net的openjfx項目上也有很詳細(xì)的說明。可根據(jù)個人的習(xí)慣選擇NetBeans或是Eclipse等。我偏愛用
NetBeans,因此后面有很多例子將會在NetBeans下開發(fā)的。當(dāng)然,原理都是一樣的。
3、Hello FX World
記住兩點:1、大小寫敏感;2、包跟Java中是一樣的,但對文件名不要求,后綴名建議用fx。(不像Java中文件名是類名)
我們的第一個JavaFX程序:
package tmp;
import javafx.ui.*;
import javafx.ui.canvas.*;
/**
* @author a1
*/
// place your code here
Frame {
title: "Hello World"
width: 300
height: 100
background: Color.ORANGE
visible: true
content:
FlowPanel {
content:Button {
text: "Click!"
action: function():Void {
MessageDialog {
title: "Hello JavaFX"
message: "Have fun!\nThis is your first JavaFX app!"
visible: true
}
}
}
}
}
保存在D:\tmp\HelloFX.fx。
打開命令行,進(jìn)入D:\tmp,運行:D:\openjfx\bin\javafxc HelloFX.fx,如果你沒有寫錯的話,應(yīng)該成功編譯。
然后退回D:\(因為tmp是我們要用的package),運行:D:\openjfx\bin\javafx tmp.HelloFX,程序就成功運行了。結(jié)果如圖:

基本步驟講到這里,以后就不再重復(fù)。具體的代碼一目了然,我也就不啰嗦了。