第 12 章 桌面应用程序 桌面应用程序
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
Java 凭借 applet(网页上令人惊叹的交互式元素)的强大功能一举成名,。这在今天听起来平淡无奇,但在当时却堪称奇迹。Java 还支持跨平台,可以在 Windows、Unix 和 macOS 系统上运行相同的代码。早期的 JDK 有一套简陋的图形组件,统称为抽象窗口工具包(AWT)。AWT 中的 "抽象 "来自于使用具有本地实现的通用类(Button 、Window 等)。您使用抽象的跨平台代码编写 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 类是按层次方式设计和扩展的。JComponent 和JContainer 位于 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