0

0

Java常用图形界面类库Swing与JavaFX

P粉602998670

P粉602998670

发布时间:2026-01-11 17:06:53

|

973人浏览过

|

来源于php中文网

原创

swing仍可用但已标记弃用,javafx需单独引入;二者线程模型不同(edt vs application thread),布局与打包方式差异显著,javafx依赖模块化且具现代ui能力。

java常用图形界面类库swing与javafx

Swing 和 JavaFX 在 JDK 11+ 中的实际可用性

Java 11 起,JavaFX 已从 JDK 中剥离,Swing 仍保留在 java.desktop 模块中,但官方明确标记为 @Deprecated(forRemoval = true)(自 JDK 17 起)。这意味着:你还能用 Swing,但新项目不建议启动;JavaFX 不再随 JDK 自带,必须单独引入依赖或分发 SDK。

  • Swing 编译运行仍正常,但 IDE 可能提示弃用警告(如 JFrameJButton
  • JavaFX 项目若未配置 javafx-controlsjavafx-fxml 等模块,会直接抛 NoClassDefFoundError: javafx/application/Application
  • OpenJDK 构建(如 Temurin、Zulu)默认不含 JavaFX;部分厂商 JDK(如 Liberica JDK)可选 bundled 版本

事件线程模型差异直接影响 UI 响应逻辑

Swing 使用单线程 EDT(Event Dispatch Thread),所有 UI 更新必须在 EDT 内执行;JavaFX 使用 Application Thread,且对线程安全更严格——非 FX 线程修改控件属性会立即抛 IllegalStateException: Not on FX application thread

  • Swing 中常用 SwingUtilities.invokeLater()invokeAndWait() 切回 EDT
  • JavaFX 中必须用 Platform.runLater() 包裹 UI 更新代码
  • 后台任务:Swing 推荐 SwingWorker;JavaFX 推荐 Task + Service,而非裸线程
Platform.runLater(() -> {
    label.setText("Done");
    progressBar.setProgress(1.0);
});

布局管理器与 FXML 的实际协作成本

Swing 的 GroupLayoutGridBagLayout 学习门槛高,且代码易冗长;JavaFX 默认推荐 FXML + Controller 分离,但 FXML 文件需配套编译、资源路径敏感、IDE 支持参差(尤其 IntelliJ 对 @FXML 注入有时不自动识别)。

Delphi 7应用编程150例 全书内容 CHM版
Delphi 7应用编程150例 全书内容 CHM版

Delphi 7应用编程150例 CHM全书内容下载,全书主要通过150个实例,全面、深入地介绍了用Delphi 7开发应用程序的常用方法和技巧,主要讲解了用Delphi 7进行界面效果处理、图像处理、图形与多媒体开发、系统功能控制、文件处理、网络与数据库开发,以及组件应用等内容。这些实例简单实用、典型性强、功能突出,很多实例使用的技术稍加扩展可以解决同类问题。使用本书最好的方法是通过学习掌握实例中的技术或技巧,然后使用这些技术尝试实现更复杂的功能并应用到更多方面。本书主要针对具有一定Delphi基础知识

下载
  • 纯代码写 JavaFX 布局(如 VBoxHBoxBorderPane)比 Swing 更直观,嵌套结构一目了然
  • FXML 中引用自定义控件需声明 fx:use-declarations="true" 并确保类在 classpath,否则加载时抛 ClassNotFoundException
  • Swing 没有等效的“声明式 UI”标准方案;Scene Builder 导出的 FXML 无法直接用于 Swing

打包与部署时最常卡住的两个点

Swing 应用可直接 jar -cf 打包,只要 JRE 存在就能运行;JavaFX 必须处理模块化和原生库依赖,否则 Windows 上可能报 UnsatisfiedLinkError: Can't load library: ...jfxwebkit.dll,Linux/macOS 则缺 libglass.solibjavafx_font.dylib

立即学习Java免费学习笔记(深入)”;

  • Maven 项目需用 javafx-maven-plugin(非 maven-assembly-plugin)生成可执行镜像
  • Gradle 用户注意:javafxPluginapplication 插件共存时,run 任务默认不加载 JavaFX 模块,需显式配置 jvmArgs--module-path--add-modules
  • JavaFX 17+ 强制要求模块名(如 --add-modules javafx.controls,javafx.fxml),漏一个就启动失败

Swing 的兼容性优势只在存量维护场景成立;JavaFX 的现代特性(CSS 样式、动画 API、WebView、硬件加速)不是“锦上添花”,而是决定能否实现某些交互效果的根本条件。别在 JavaFX 里硬套 Swing 思维,比如试图复用 ActionListener —— 它根本不存在于 JavaFX 的事件体系中。

相关文章

Windows激活工具
Windows激活工具

Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

723

2023.08.10

Java 并发编程高级实践
Java 并发编程高级实践

本专题深入讲解 Java 在高并发开发中的核心技术,涵盖线程模型、Thread 与 Runnable、Lock 与 synchronized、原子类、并发容器、线程池(Executor 框架)、阻塞队列、并发工具类(CountDownLatch、Semaphore)、以及高并发系统设计中的关键策略。通过实战案例帮助学习者全面掌握构建高性能并发应用的工程能力。

95

2025.12.01

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1336

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1158

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

827

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

460

2023.08.02

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2361

2023.08.08

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

24

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 38.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号