这是 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 应用由Stage
和Scene
组成。 Stage
是顶级容器,是应用的主窗口。 (对于嵌入在 Web 浏览器中的应用,它是主要的矩形区域。)Scene
是Stage
可视内容的容器。 Scene's
内容被组织在场景图中。 这两个术语反映了从桌面应用到更通用的富互联网应用的转变。
场景图
场景图是节点的分层树,代表应用用户界面的所有可视元素。 场景图中的单个元素称为节点。 每个节点都是分支节点或叶节点。 分支节点可以包含其他节点(它们的子节点)。 叶节点不包含其他节点。 树中的第一个节点称为根节点; 根节点没有父节点。
节点的具体实现包括图形基元,控件,布局管理器,图像或媒体。 可以通过修改节点属性来操纵场景。 这样,我们可以为节点设置动画,应用效果,进行变换或更改其不透明度。
构建 JavaFX 应用
NetBeans IDE 具有 JavaFX 项目类别。 可通过菜单栏中的文件,新建项目或通过 Ctrl + Shift + N
键盘快捷键访问该文件。
图:NetBeans 中的 JavaFX 项目类别
首次申请
在本节中,我们将介绍一个简单的 JavaFX 应用。
FirstEx.java
package com.zetcode;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
/**
* ZetCode Java SWT tutorial
*
* This program shows a label control in
* the middle of the main window.
*
* Author: Jan Bodnar
* Website: zetcode.com
* Last modified: June 2015
*/
public class FirstEx extends Application {
@Override
public void start(Stage stage) {
initUI(stage);
}
private void initUI(Stage stage) {
StackPane root = new StackPane();
Scene scene = new Scene(root, 300, 250);
Label lbl = new Label("Simple JavaFX application.");
lbl.setFont(Font.font("Serif", FontWeight.NORMAL, 20));
root.getChildren().add(lbl);
stage.setTitle("Simple application");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
该示例在应用窗口的中间显示了一个文本。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
基本的 JavaFX 类,集合和属性驻留在javafx
包中。
public class FirstEx extends Application {
Application
是 JavaFX 程序的主要类。
@Override
public void start(Stage stage) {
initUI(stage);
}
Application
的start()
方法被覆盖。 start()
方法是 JavaFX 程序的主要入口点。 它接收Stage
作为其唯一参数。 (Stage
是主应用窗口或区域。)用户界面是通过initUI()
方法构建的。
StackPane root = new StackPane();
StackPane
是用于组织节点的容器。 它使用一个简单的布局管理器,将其内容节点放置在从后到前的单个栈中。 在我们的情况下,我们只想将单个节点居中。
Scene scene = new Scene(root, 300, 250);
Scene
是场景图中所有内容的容器。 它以根节点为第一个参数。 StackPane
是此场景图中的根节点。 接下来的两个参数指定场景的宽度和高度。
Label lbl = new Label("Simple JavaFX application.");
lbl.setFont(Font.font("Serif", FontWeight.NORMAL, 20));
创建一个Label
控件,并使用setFont()
方法设置其字体。 Label
是不可编辑的文本控件。
root.getChildren().add(lbl);
标签控件被添加到StackPane
中。 getChildren()
方法返回窗格的子级列表。
stage.setTitle("Simple application");
Stage
的setTitle()
方法为主窗口设置标题。
stage.setScene(scene);
使用setScene()
方法将场景添加到舞台。
stage.show();
show()
方法在屏幕上显示窗口。
public static void main(String[] args) {
launch(args);
}
不需要传统的main()
方法。 它仅在 JavaFX 启动无法正常工作的情况下用作备用。
图:第一个 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 的简介。