JavaFX 入门

JavaFX是 Java 的 GUI 工具包(GUI 是图形用户界面【Graphical User Interface】的缩写)。JavaFX 使用 Java 创建桌面应用程序和游戏变得更加容易。

为什么选择 JavaFX?

JavaFX 是一个出色的 GUI 应用程序平台有几个原因。首先,Java 仍然是世界上最流行的编程语言之一,拥有大量的标准类,以及 Java 开发者社区开发的丰富的开源工具包。

其次,JavaFX 可以在以下所有操作系统和设备上运行:

  • Windows
  • Linux
  • Mac
  • iOS
  • Android / Chromebook
  • Raspberry Pi

这使得 JavaFX 成为一个通用的跨操作系统和跨设备应用程序工具包。

第三,JavaFX 带有一组丰富的 GUI 控件,并且开源工具包为整个生态系统添加了更多工具。

JavaFX 功能

JavaFX 带有大量内置的 GUI 组件,例如按钮、文本字段、表格、树、菜单、图表等等。JavaFX 可以通过 CSS 和/或以编程方式设置样式。JavaFX 带有一个内置的图表库,您可以将其用于简单的图表。JavaFX 支持 2D 和 3D 图形。JavaFX 有一个可以显示现代 Web 应用程序的 WebView。

    • 阶段
    • 场景
    • 节点
    • 特性
    • FXML
  • 布局
    • 地区
    • 窗格
    • HBox
    • 盒子
    • 流窗格
    • 瓷砖窗格
    • 网格窗格
    • 团体
    • 堆栈窗格
    • 锚点窗格
    • 边框窗格
  • 基本控制
    • 标签
    • 按钮
    • 菜单按钮
    • 拆分菜单按钮
    • 按钮栏
    • 切换按钮
    • 单选按钮
    • 复选框
    • 选择框
    • 组合框
    • 列表显示
    • 文本域
    • 密码字段
    • 文本区域
    • 图像视图
    • 日期选择器
    • 选色器
    • 滑块
    • 工具提示
    • 超链接
    • 进度条
    • 进度指示器
    • 菜单栏
    • 上下文菜单
    • 分隔器
    • 表视图
    • 树视图
    • 树表视图
    • HTML编辑器
    • 分页
    • 文件选择器
    • 目录选择器
    • 微调器
  • 容器控件
    • 手风琴
    • 标题窗格
    • 选项卡窗格
    • 拆分窗格
    • 滚动窗格
  • 网络
    • 网络视图
    • 网络引擎
  • 图表
    • 饼形图
    • 条形图
    • 堆积条形图
    • 散点图
    • 折线图
    • 面积图
    • 堆积面积图
    • 气泡图
  • 其他概念
    • 字体
    • 文本格式化程序
    • 对话框
    • 颜色
    • 2D 形状
    • 3D 形状
    • 效果
    • 转型
    • 动画片
    • 帆布
    • 像素缓冲区
    • 拖放
    • 声音的
    • 视频
    • 打印 API
    • 高 DPI 分辨率屏幕支持
    • JavaFX 中的并发

第三方 JavaFX 资源

有一些很酷的第三方资源可用。我在这里列出了其中一些:

  • JavaFX Drift - OpenGL 等对 JavaFX 的支持。无缝集成到场景图中。
  • ControlsFX - JavaFX 的额外 UI 控件。
  • GemsFX - JavaFX 的额外 UI 控件。
  • TilesFX - JavaFX 的额外 UI 控件。

与 JavaFX 相关的资源:

  • Skija - 用于 Java 的快速 2D 图形 - 使用硬件加速图形。

JavaFX 应用程序

以下是使用 JavaFX 制作的一些公开可用的应用程序,因此您可以亲自了解使用 JavaFX 的可能性:

  • DBFX - 免费的数据库管理 GUI 应用程序(管理控制台)。

为什么选择桌面应用程序?

为什么移动设备首选本机/本地应用程序,而台式计算机首选 Web 应用程序?为什么这两种类型的设备都不首选本机/本地应用程序?

原生/本地应用程序往往比 Web 应用程序提供更好的用户体验,因为它响应速度更快(更快、更快捷)、具有更高级的 GUI 控件以及与本地设备更好的集成。传统桌面应用程序的两个最大问题是互联网带宽低和安装过程繁琐。随着高速互联网连接的普及,私人设备的应用商店和企业机器的按需安装系统,这两个问题都已基本解决。

在我看来,对于所有经常使用的应用程序,或者工作流程有些复杂的应用程序,应该首选本地/本地应用程序。对于需要访问其运行的计算机的本地磁盘,或者需要与许多不同的远程系统通信,有时使用 HTTP 以外的其他协议(例如IAP或流协议等)的应用程序,本机/本地应用程序也应该是首选。 )。

用户很少使用的应用程序,或者用户没有真正动机下载和安装的应用程序可能应该保留为 Web 应用程序。例如,用于登录和管理您的保险合同的应用程序可能可以作为 Web 应用程序来实施。但是,您的用户每天使用多次的项目管理工具可能最好是桌面应用程序。

JavaFX 用例

我被问过好几次桌面应用程序是否已经死了——是否真的有任何用例可以用于 JavaFX 之类的东西。确实,许多应用程序都非常适合 Web 应用程序,因为您很少访问它们,而且您访问的资源无论如何都存储在服务器上。但是,还有几种类型的应用程序可以更好地实现为桌面应用程序。

正如介绍中提到的,我们在Nanosai实际上正在使用 JavaFX 开发桌面应用程序。我们这样做是因为该应用程序需要访问本地磁盘,需要能够通过 HTTP 以外的其他网络协议进行通信,并且需要标准 Web 浏览器根本不提供的其他几个功能。

以下是我看到的 JavaFX 的一些一般用例列表:

  • 开发者工具
    • IDE
    • 编辑
    • 文件压缩/加密工具
    • 扫描本地磁盘的工具
  • 本地系统维护工具
    • 备份工具
    • 病毒扫描
  • 实用程序
    • Skype / Messenger / 聊天
    • 屏幕截图工具
    • 照片和视频编辑
    • 视频播放器
    • 音频编辑
    • 音频播放器
  • 游戏
  • 数据科学工具

以下是我经常使用的一些桌面应用程序:

  • IntelliJ IDEA
  • 记事本++
  • 源树
  • SnagIt
  • 油灰
  • WinSCP
  • Skype
  • 信号
  • 电报
  • 照相馆
  • 首映专业版
  • 视频局域网 (VLC)
  • 易画

此外,一些开始使用 Web 应用程序的公司后来添加了本机/本地桌面应用程序。其中一些是:

  • YouTube 音乐
  • Spotify
  • 微软团队
  • 松弛
  • 谷歌云端硬盘

移动设备上的 JavaFX

Gluon提供了一组工具来帮助您将 JavaFX 应用程序构建和打包为移动设备(Android 和 iOS)的本机映像。

树莓派上的 JavaFX

也可以在 Raspberry Pi 计算机上运行 JavaFX。

来自 Java 11 的 JavaFX

从 Java 11 开始,JavaFX 已再次从 Java SDK 中删除。JavaFX 已分离到它自己的开源项目中。这意味着要从 Java 11 / JavaFX 11 下载 JavaFX,您必须访问:

http://openjfx.io

然而,JavaFX 不断发展,并且在其用户中仍然非常受欢迎。

JavaFX 游戏引擎

Almas Baim 制作了FXGL JavaFX 游戏引擎。您可以在以下位置找到它:

https://github.com/AlmasB/FXGL

JavaFX 与 Swing

您可能知道 Java 还有另一个称为 Java Swing(或 JFC)的 GUI 工具包。如果您想知道这两个工具包之间的区别是什么,我在下面列出了一些主要区别:

特征

JavaFX

Swing

属性绑定

JavaFX 属性支持绑定,这意味着您可以监听其值的变化。

Swing 属性不直接支持绑定。

声明式布局

JavaFX 支持通过 FXML 进行声明式布局。

Swing 没有对声明式布局的内置支持。

造型

JavaFX 支持基于 CSS 和基于代码的样式。

Swing 仅支持基于代码的样式。

网络视图

JavaFX 有一个可以呈现现代网页的 WebView。

Swing 没有 WebView。

图形

JavaFX 使用基于矢量的图形。

Swing 使用基于像素的图形。

3D 图形

JavaFX 具有对 3D 图形的内置支持。

Swing 需要用于 3D 图形的 Java 3D API。

并发 API

JavaFX 有一个内置的并发 API。

Swing 没有内置的并发 API。

工具包的时代

JavaFX 较新。

Swing 比较老。

包含在 Java SDK 中

Java 11 及更高版本不包含 JavaFX。

Swing 仍然包括在内,但可能有一天会被删除。

GitHub 上的 JavaFX 示例

为了您的方便,我已开始将本教程中的许多 JavaFX 示例添加到公共 GitHub 存储库。这些示例是可立即运行的独立示例,每个示例都有自己的类 + main() 方法来运行该特定示例。这是 GitHub 存储库:

GitHub 上的 JavaFX 示例

JavaFX JavaDoc

您可以在此处找到 JavaFX 11 JavaDoc:

Overview (JavaFX 11)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑石课堂

请给我打钱!!!谢谢,不客气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值