原文: http://zetcode.com/gui/javafx/intro/

这是 JavaFX 入门教程。 本教程的目的是帮助您开始使用 JavaFX。 该教程已在 Linux 上创建并测试。

关于 JavaFX

JavaFX 是用于开发和交付可在多种设备上运行的互联网富应用(RIA)的软件平台。 JavaFX 是用于 Java 平台的下一代 GUI 工具包。 它与 Java SE Runtime Environment(JRE)和 Java Development Kit(JDK)的最新版本完全集成。

JavaFX 具有以下主要部分:

  • Prism
  • Glass 窗口工具包
  • 媒体引擎
  • 网页引擎

Prism 是用于 2D 和 3D 图形的高性能图形引擎。Glass 窗口工具箱是一个依赖于平台的层,将 JavaFX 连接到本机操作系统。 它提供本机操作系统服务,例如管理窗口,事件,计时器和表面。媒体引擎提供了用于创建媒体应用的工具,这些应用允许在支持的平台上的桌面窗口或网页内播放媒体。Web 引擎是一种网络浏览器引擎,支持 HTML5,CSS,JavaScript,DOM 和 SVG。

JavaFX 应用性能分析

Application是 JavaFX 程序的主要类。 每个 JavaFX 程序必须扩展Application类。 其start()方法是应用的主要入口点; 这是系统准备就绪后要调用的第一个方法。 JavaFX 应用中不需要main()方法; 当在某些情况下无法启动应用时,它可以用作备用。

JavaFX 应用由StageScene组成。 Stage是顶级容器,是应用的主窗口。 (对于嵌入在 Web 浏览器中的应用,它是主要的矩形区域。)SceneStage可视内容的容器。 Scene's内容被组织在场景图中。 这两个术语反映了从桌面应用到更通用的富互联网应用的转变。

场景图

场景图是节点的分层树,代表应用用户界面的所有可视元素。 场景图中的单个元素称为节点。 每个节点都是分支节点或叶节点。 分支节点可以包含其他节点(它们的子节点)。 叶节点不包含其他节点。 树中的第一个节点称为根节点; 根节点没有父节点。

节点的具体实现包括图形基元,控件,布局管理器,图像或媒体。 可以通过修改节点属性来操纵场景。 这样,我们可以为节点设置动画,应用效果,进行变换或更改其不透明度。

构建 JavaFX 应用

NetBeans IDE 具有 JavaFX 项目类别。 可通过菜单栏中的文件,新建项目或通过 Ctrl + Shift + N 键盘快捷键访问该文件。

JavaFX 简介 - 图1

图:NetBeans 中的 JavaFX 项目类别

首次申请

在本节中,我们将介绍一个简单的 JavaFX 应用。

FirstEx.java

  1. package com.zetcode;
  2. import javafx.application.Application;
  3. import javafx.scene.Scene;
  4. import javafx.scene.control.Label;
  5. import javafx.scene.layout.StackPane;
  6. import javafx.scene.text.Font;
  7. import javafx.scene.text.FontWeight;
  8. import javafx.stage.Stage;
  9. /**
  10. * ZetCode Java SWT tutorial
  11. *
  12. * This program shows a label control in
  13. * the middle of the main window.
  14. *
  15. * Author: Jan Bodnar
  16. * Website: zetcode.com
  17. * Last modified: June 2015
  18. */
  19. public class FirstEx extends Application {
  20. @Override
  21. public void start(Stage stage) {
  22. initUI(stage);
  23. }
  24. private void initUI(Stage stage) {
  25. StackPane root = new StackPane();
  26. Scene scene = new Scene(root, 300, 250);
  27. Label lbl = new Label("Simple JavaFX application.");
  28. lbl.setFont(Font.font("Serif", FontWeight.NORMAL, 20));
  29. root.getChildren().add(lbl);
  30. stage.setTitle("Simple application");
  31. stage.setScene(scene);
  32. stage.show();
  33. }
  34. public static void main(String[] args) {
  35. launch(args);
  36. }
  37. }

该示例在应用窗口的中间显示了一个文本。

  1. import javafx.application.Application;
  2. import javafx.scene.Scene;
  3. import javafx.scene.control.Label;
  4. import javafx.scene.layout.StackPane;
  5. import javafx.scene.text.Font;
  6. import javafx.scene.text.FontWeight;
  7. import javafx.stage.Stage;

基本的 JavaFX 类,集合和属性驻留在javafx包中。

  1. public class FirstEx extends Application {

Application是 JavaFX 程序的主要类。

  1. @Override
  2. public void start(Stage stage) {
  3. initUI(stage);
  4. }

Applicationstart()方法被覆盖。 start()方法是 JavaFX 程序的主要入口点。 它接收Stage作为其唯一参数。 (Stage是主应用窗口或区域。)用户界面是通过initUI()方法构建的。

  1. StackPane root = new StackPane();

StackPane是用于组织节点的容器。 它使用一个简单的布局管理器,将其内容节点放置在从后到前的单个栈中。 在我们的情况下,我们只想将单个节点居中。

  1. Scene scene = new Scene(root, 300, 250);

Scene是场景图中所有内容的容器。 它以根节点为第一个参数。 StackPane是此场景图中的根节点。 接下来的两个参数指定场景的宽度和高度。

  1. Label lbl = new Label("Simple JavaFX application.");
  2. lbl.setFont(Font.font("Serif", FontWeight.NORMAL, 20));

创建一个Label控件,并使用setFont()方法设置其字体。 Label是不可编辑的文本控件。

  1. root.getChildren().add(lbl);

标签控件被添加到StackPane中。 getChildren()方法返回窗格的子级列表。

  1. stage.setTitle("Simple application");

StagesetTitle()方法为主窗口设置标题。

  1. stage.setScene(scene);

使用setScene()方法将场景添加到舞台。

  1. stage.show();

show()方法在屏幕上显示窗口。

  1. public static void main(String[] args) {
  2. launch(args);
  3. }

不需要传统的main()方法。 它仅在 JavaFX 启动无法正常工作的情况下用作备用。

JavaFX 简介 - 图2

图:第一个 JavaFX 应用

Swing 和 SWT

Swing 是 Java 的第一个主要 GUI 工具包。 它是一个健壮且灵活的 GUI 库。 Swing 在企业应用中很流行。 创建 JavaFX 的动机之一是很难使 Swing 适应用户界面的新趋势。 因此,决定将 JavaFX 创建为一个全新的工具箱。

标准窗口小部件工具箱(SWT)是 Java 的第三方 GUI 库。 SWT 使用 Windows API 或 GTK+ 之类的本地 GUI API 通过 Java 本机接口(JNI)创建其小部件。 与 Swing 和 JavaFX 不同,SWT 不是 JDK 的一部分。 它可以作为外部 JAR 文件使用。 SWT 最初是由 IBM 公司开发的。 现在,它是一个由 Eclipse 社区维护的开源项目。

这是 JavaFX 的简介。