JavaFX教程

  • 本JavaFX中文教程翻译原文来源于JavaFX 文本教程
  • 文中内容若翻译有误或有侵权问题,请及时与我联系!
  • 翻译此文的目的是为以后学习更加方便查看。
  • 文章持续更新中…

JavaFX使用教程

JavaFX是Java的GUI工具箱(GUI是图形用户界面的缩写)。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。

这是JavaFX中概念,组件和功能的完整列表:

  • Core
    • Stage
    • Scene
    • Node
    • Properties
    • FXML
  • Layout
    • Region
    • Pane
    • HBox
    • VBox
    • FlowPane
    • TilePane
    • GridPane
    • Group
    • StackPane
    • AnchorPane
    • BorderPane
  • Basic Controls
    • Label
    • Button
    • MenuButton
    • SplitMenuButton
    • ButtonBar
    • ToggleButton
    • RadioButton
    • CheckBox
    • ChoiceBox
    • ComboBox
    • ListView
    • TextField
    • PasswordField
    • TextArea
    • ImageView
    • DatePicker
    • ColorPicker
    • Slider
    • Tooltip
    • Hyperlink
    • ProgressBar
    • ProgressIndicator
    • MenuBar
    • ContextMenu
    • Separator
    • TableView
    • TreeView
    • TreeTableView
    • HTMLEditor
    • Pagination
    • FileChooser
    • DirectoryChooser
    • Spinner
  • Container Controls
    • Accordion
    • TitledPane
    • TabPane
    • SplitPane
    • ScrollPane
  • Web
    • WebView
    • WebEngine
  • Charts
    • PieChart
    • BarChart
    • StackedBarChart
    • ScatterChart
    • LineChart
    • AreaChart
    • StackedAreaChart
    • BubbleChart
  • Other Concepts
    • Fonts
    • TextFormatter
    • Dialogs
    • Color
    • 2D Shapes
    • 3D Shapes
    • Effects
    • Transformations
    • Animation
    • Canvas
    • PixelBuffer
    • Drag and Drop
    • Audio
    • Video
    • Print API
    • High DPI resolution screen support
    • Concurrency in JavaFX

第三方JavaFX资源

下列有一些很不错的第三方资源,主要列出了其中一些:

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

与JavaFX相关的资源:

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

JavaFX应用

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

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

为什么要使用桌面应用程序?

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

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

我认为本地/本地应用程序应该是经常使用的所有应用程序的首选,或者工作流程有些复杂的应用程序。对于需要访问其运行的计算机的本地磁盘或需要与许多不同的远程系统进行通信并且有时使用除HTTP之外的其他协议(例如IAP或流协议等)的应用程序,本机/本地应用程序也应该是首选)。有关更多应用程序示例,请参见JavaFX用例

用户很少使用的应用程序,或者用户没有真正动机去下载和安装的应用程序可能应该保留为Web应用程序。例如,登录并管理您的保险合同的应用程序可能会很好地实现为网络应用程序。但是,您的用户每天使用几次的项目管理工具可能最好成为桌面应用程序。

JavaFX用例

我曾被问过好几次桌面应用程序是否都过时了-是否真的还有JavaFX之类的用例。的确,许多应用程序非常适合Web应用程序,因为您很少访问它们,并且所访问的资源始终存储在服务器上。但是,还有几种类型的应用程序可以更好地实现为桌面应用程序。

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

这是我在JavaFX上看到的一些一般用例的列表:

  • Developer tools
    • IDE
    • Editors
    • File compression / encryption tools
    • Tools scanning the local disk
  • Local system maintenance tools
    • Backup tools
    • Virus scans
  • Utility apps
    • Skype / Messenger / Chat
    • Screen shot tools
    • Photo and video editing
    • Video players
    • Audio editing
    • Audio players
  • Games
  • Data Science Tools

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

  • IntelliJ IDEA
  • Notepad++
  • SourceTree
  • SnagIt
  • Putty
  • WinSCP
  • Skype
  • Signal
  • Telegram
  • PhotoShop
  • Premiere Pro
  • VideoLAN (VLC)
  • EDraw

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

  • YouTube Music
  • Spotify
  • Microsoft Teams
  • Slack
  • Google Drive

移动设备上的JavaFX

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

Raspberry Pi上的JavaFX

也可以在Raspberry Pi计算机上运行JavaFX。您可以在《 Raspberry Pi上的Java入门》一书中阅读有关如何在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也有另一个GUI工具箱,称为Java Swing(或JFC)。如果您想知道这两个工具包之间的区别是什么,我在下面列出了一些主要区别:

特征JavaFXSwing
属性绑定JavaFX属性支持绑定,这意味着您可以侦听其值的更改Swing属性不直接支持绑定
声明式布局JavaFX支持通过FXML进行声明式布局Swing没有对声明式布局的内置支持
造型风格JavaFX支持基于CSS和基于代码的样式Swing仅支持基于代码的样式
WebViewJavaFX具有可呈现现代网页的WebViewSwing没有WebView
GraphicsJavaFX使用基于矢量的图形Swing使用基于像素的图形
3D图形JavaFX具有对3D图形的内置支持Swing需要Java 3D API用于3D图形
并发APIJavaFX具有内置的并发APISwing没有内置的并发API
工具包JavaFX是较新的Swing比较老
包含在Java SDK中Java 11和更高版本不包含JavaFXSwing仍然包括在内,但有一天可能会被删除

Github上的JavaFX示例

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

GitHub上的JavaFX示例

JavaFX书籍

以下是我读过的有关JavaFX的最有用的书:

JavaFX JavaDoc

您可以在此处找到JavaFX 11 JavaDoc:
https://openjfx.io/javadoc/11/

下一页:JavaFX概述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值