(以下内容摘自网上多个页面,组合而成。)
什么是JavaFX
JavaFX是一个 Java 的图形和媒体工具包。它使得Java应用程序开发者可以方便的设计开发富客户应用(Rich Client Application)。
有一点需要我们注意。最开始的时候,JavaFX 是作为一种独立的编程语言来发布的,有自己的 SDK,自己的语言格式(虽然同Java 很接近)。2.0 之前的JavaFX 基本上是一种脚本语言。但是从2011年10月发布 JavaFX 2.0 开始,Oracle 决定以Java 工具包的形式来发布它。这样做的好处是Java 开发人员不用为了开发 RIA 再去学习另外一种编程语言了。我们看到网络上大量关于 JavaFX 的资料还停留在脚本语言时代,显然它们已经完全过时了。
JavaFX 配置
如果你使用的是JDK1.7,那么 JavaFX 工具包已经包含在里面了。你只用在开发应用程序的时候将其导入类库就好。如果使用的是 JDK 1.6,则需要自己下载一个 SDK。
使用 Ecilpse 开发JavaFX 程序示例
由于现在 JavaFX 是以java 包的形式发布的,因此,我们无需安装任何插件就可以在 eclipse 里开发JavaFX 程序了。
我们使用了 JDK1.7.
1. 新建 Java Project。将其命名为 javafx。
2. 将 “jfxrt.jar”导入类库。右键javafx -> Properties -> Java Build Path -> Libraries -> AddExternal JARs. 在“jdk1.7.0_21/jre/lib”文件夹下可以找到“jfxrt.jar”文件。
3. 建立 HelloWorld 类。
4. 将下面代码拷贝到HelloWorld.java 中。
package helloworld; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class HelloWorld extends Application{ public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Hello World!"); Button btn = new Button(); btn.setText("Say ‘Hello World‘"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("HelloWorld!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
我们简单解释一下:
- JavaFX 应用的应用类继承了 javafx.application.Application 类。它的 start() 方法是所有 JavaFX 应用程序的入口。
- JavaFX 的应用接口容器用 stage 和 scene 来定义(舞台和场景)。Stage 类位于 JavaFX 容器的顶层,而 Scene 类则是所有内容部分(不包括边框)的容器。
- JavaFX 中 scene 的内容以一种具有层次结构的节点图来表示。在这个例子中,根节点是 StackPane 对象。
- 如果需要将 JavaFX Application 用 JavaFX 打包工具打包成 jar文件,那么 main()方法就不是必须的。JavaFX 打包工具会嵌入一个 JavaFX launcher。不过如果没有使用 JavaFX launcher,使用main() 方法还是很有用的。
下图是该应用程序的场景图:
5. OK。我们的第一个 JavaFX 程序做完了。点击运行一下试试吧。
点击“Say Hello World”,我们就会在控制台看到输出“Hello World”