我已经使用 Swing 有一段时间了,但是JFrame
s、paint()
、super
等的整个模型/结构在我的脑海中都是模糊的。我需要一个清晰的解释或链接来解释整个 GUI 系统是如何组织的。
7 回答
同样的事情发生在我身上。实际上,直到今天我还没有完全了解它是如何工作的 100%。
Swing 是一个非常灵活的框架——也许太灵活了。灵活性带来了很多抽象,而抽象带来了混乱。:)
我发现以下文章值得一读。他们帮助我更好地理解了 Swing 的大局。
- Swing 架构概述
安装 UI 委托的过程,也就是这张图:
他们很好地解释了模型和委托是如何工作的。JLabel
当我看到那些,,,等时LabelUI
,它总是让我发疯ui.update
。
您看过 Java Swing 教程(单击此处)吗?它很好地涵盖了开发 Swing 应用程序的基础知识。
由于这个问题被标记为JFrame
,我将建议一些链接来了解JFrame
s 和其他顶级 Swing 容器是如何工作的。
我还发现 Swing 曾经(现在仍然)非常投入,并且每隔一段时间就需要查看 Sun 提供的文档——每次我检查时,我似乎都学到了一些新东西。
首先,基础知识:JFrame
来自 Java API 规范的类。Java API 规范通常提供有关类的详细信息。在本例中,您会注意到有几个链接,例如The Java Tutorials 中的How to Make Frames部分。
除此之外,我还建议您查看课程:使用 Java 教程中的 Swing 组件。本课程提供了有关如何使用 Swing 中提供的组件的说明以及一些有用的示例。
对于更多细节,当我开始使用 Swing 时,我发现令人困惑的部分是所有不同类型的窗格,例如ContentPane
、RootPane
、GlassPane
。使用顶级容器部分提供有关顶级容器的容器层次结构的信息和有用的图表。如何使用根窗格部分通过大量示例详细介绍了玻璃、分层和内容窗格。
我发现Swing Explorer是理解组件层次结构(尤其是在复杂的 GUI 中)和查看属性(唉,只读:我们习惯了 Firebug 的便利!)的宝贵工具。它有一个 Eclipse 插件。
Chet Haase 和 Romain Guy 的Filthy Rich Clients是一本关于 Java UI 的好书。它还涵盖了一些更高级的内容,但介绍和很少的第一章很好地解释了基本的东西。
如果在阅读 Swing 教程后,您发现自己的兴趣在于更高级的主题,您可能还希望查看 Robinson 和 Vorobiev 的Swing 第二版。
我发现简单地浏览源代码(如果您使用的是 NetBeans,请按住 ctrl 单击名称)非常有帮助。如果我看到一个我不熟悉的方法出现在完成对话框中,我只需单击“转到源代码”并环顾四周,直到我感到满意为止。