/**
写这篇文章之前我先google了一下JavaFX的接受度,结果一篇文章跳进我的视线:(2007年8月)Michael Urban写的:为什么没人对JavaFX感兴趣?(原文:
JavaFX: How Much Interest Is there?)。国外尚且如此,国内FX的环境就可想而知了。看来为了继续推广JavaFX,Sun还需更多的工作去做。文章在最后说:我们作为Java族的一员是否该为增加JavaFX的兴趣度而做点什么呢?呵呵,应该的啦,所以就准备写写JavaFX的文章了。
原创:西门町学士
*/
JavaFX出来已经很长一段时间了。一直在计划跟进,可是因为比较懒,现在才慢慢地学习。这里就暂做做学习总结的地方吧。
虽
然是总结,我还是打算写详细一点。本来我对JavaFX了解也不是很多,有的东西还要在网上查证了才能写(比较JavaFX是如何诞生,如何从F3变成
JavaFX的)。今天要写的主要是:1、JavaFX的前世今生;(了解了它的历史也就了解了它是什么,它的发展方向,呵呵)2、如何拥有
JavaFX;(知道从哪里去下载开发工具,如何配置它)3、Hello JavaFX World(当然,一个经典的Hello
World是不能少的)
1、前世今生
如果你抱有太高的期望,希望在这里把JavaFX弄得清清楚楚,恐怕你要失望了。说实话,我也不清楚。甚至有人建议我从Applet开始讲,Oh NO!!
这
里,我不准备讲DSL,也不打算讲Swing。我能想到的开头就是:一个叫Chris
Oliver的家伙,觉得用Java语言(以及差不多的语言,包括VCVBDelphiC#)做GUI开发太蹩脚了。他觉得开发GUI应该是采用声明式的
语言(比如:上帝说,要有光。于是有了光),而且还非常英明地放弃了当时(以及现在)流行的XML方式(MS和Mozilla都走了这条道),于是,他开
发了F3。为什么叫F3呢,因为他当时想的是Form Follows
Function,3个F。从名字可以看出,目标就是Form,说白了就是GUI。它的语法很符合GUI的本质(而且如果你碰巧还接触过VRML的话,你
会觉得非常习惯)。由于当今的世界是DSL大行其道的世界,于是F3得到的关注越来越多,到了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是解释性执行的,用文本编辑器写好代码后就可以直接运行。为了提高执行效率,现在又开发了编译器,用于把JavaFX代码编译成
bytecode,即class文件。这个class文件和用jdk编译的Java得到的class是一样的。当然,它的运行是需要JavaFX库的支持
的。估计今后的JavaFX都是采用编译后运行。
到大本营后按页面的链接去下载最新的JavaFX。目前的版本是javafxc编译器的Milestone 3,地址是:
http://openjfx.java.sun.com/builds/javafxc-M3/。下载回来后直接解压缩就OK了。这里我们解压缩释放在D:\openjfx目录下。现在你就拥有JavaFX的全部了:编译器、运行时库、示例Demo、帮助文档等等。
另
外,为了方便开发,我们还有另外一种获取JavaFX的方式,通过IDE的JavaFX
plugin。同样,在java.net的openjfx项目上也有很详细的说明。可根据个人的习惯选择NetBeans或是Eclipse等。我偏爱用
NetBeans,因此后面有很多例子将会在NetBeans下开发的。当然,原理都是一样的。
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。
打开命令行,进入D:\tmp,运行:D:\openjfx\bin\javafxc HelloFX.fx,如果你没有写错的话,应该成功编译。
然后退回D:\(因为tmp是我们要用的package),运行:D:\openjfx\bin\javafx tmp.HelloFX,程序就成功运行了。结果如图:
基本步骤讲到这里,以后就不再重复。具体的代码一目了然,我也就不啰嗦了。