Skip to Content
学习 Java,第 6 版
book

学习 Java,第 6 版

by Marc Loy, Patrick Niemeyer, Daniel Leuck
May 2025
Intermediate to advanced
552 pages
7h 22m
Chinese
O'Reilly Media, Inc.
Content preview from 学习 Java,第 6 版

第 12 章 桌面应用程序 桌面应用程序

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

Java 凭借 applet(网页上令人惊叹的交互式元素)的强大功能一举成名,。这在今天听起来平淡无奇,但在当时却堪称奇迹。Java 还支持跨平台,可以在 Windows、Unix 和 macOS 系统上运行相同的代码。早期的 JDK 有一套简陋的图形组件,统称为抽象窗口工具包(AWT)。AWT 中的 "抽象 "来自于使用具有本地实现的通用类(ButtonWindow 等)。您使用抽象的跨平台代码编写 AWT 应用程序;计算机运行您的应用程序并提供具体的本地组件。

不幸的是,抽象与本地的巧妙结合却带来了一些相当严重的限制。在抽象领域,你会遇到 "最小公分母 "的设计,这种设计只能让你访问 JDK 支持的每个平台上可用的功能。在本机实现中,即使是一些在任何地方都大致可用的功能,在实际呈现在屏幕上时也会有明显的不同。许多早期使用 Java 的桌面开发人员开玩笑说,"一次编写,随处运行 "的口号实际上是 "一次编写,随处调试"。Java Swing 软件包就是为了改善这种糟糕的状况。虽然 Swing 并没有解决跨平台应用程序交付的所有问题,但它确实使 Java 桌面应用程序开发成为可能。你可以找到许多高质量的开源项目,甚至一些用 Swing 编写的商业应用程序。事实上,我们在附录 A 中详细介绍的集成开发环境 IntelliJ IDEA 就是一个 Swing 应用程序!显然,它在性能和可用性方面都与本地集成开发环境不相上下。1

如果您查看文档中的javax.swing2包的文档,你会发现它包含了大量的类。您仍然需要原始java.awt 领域中的某些部分。关于 AWT(《Java AWT 参考》,Zukowski,O'Reilly)和 Swing(《Java Swing》,Loy 等,O'Reilly),甚至还有关于 AWT 子包(如 2D 图形)(《Java 2D Graphics》,Knudsen,O'Reilly)的整本书。在本章中,我们将着重介绍一些常用组件,如按钮和文本字段。我们将介绍如何在应用程序窗口中布局这些组件以及如何与它们交互。您可能会惊讶地发现,通过这些简单的入门主题,您的应用程序就能变得如此复杂。如果您在阅读本书后进行了更多的桌面开发,您可能还会惊讶地发现,Java 的图形用户界面(GUI,或简称 UI)内容竟然如此丰富。我们希望在吊足你胃口的同时,也承认还有很多很多关于用户界面的讨论必须留待你以后去发现。既然如此,就让我们开始旋风之旅吧!

按钮、滑块和文本字段,哦,我的天!

从哪里开始呢?我们遇到了一个 "先有鸡还是先有蛋 "的问题:我们需要讨论将哪些 "东西 "放到屏幕上,比如我们在"HelloJava "中使用的JLabel 对象但我们还需要讨论把这些东西放在什么地方。把这些东西放到哪里也值得讨论,因为这是一个非同小可的过程。实际上,我们似乎遇到了一个 "鸡、蛋、早午餐 "的问题。拿上一杯咖啡或含羞草,我们就开始吧。我们将首先介绍一些常用的组件("东西"),然后介绍它们的容器,最后介绍如何在这些容器中布置组件。一旦你可以在屏幕上放置一组漂亮的部件,我们将讨论如何与它们交互,以及如何在多线程世界中处理用户界面。

组件层次结构

正如我们在前几章 中讨论过的,Java 类是按层次方式设计和扩展的。JComponentJContainer 位于 Swing 类层次结构的顶端, ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

《学习 Python》第 5 版

《学习 Python》第 5 版

Mark Lutz
CSS:权威指南,第 5 版

CSS:权威指南,第 5 版

Eric Meyer, Estelle Weyl
詳解 システム・パフォーマンス 第2版

詳解 システム・パフォーマンス 第2版

Brendan Gregg, 西脇 靖紘, 長尾 高弘

Publisher Resources

ISBN: 9798341656772