我已经和Swing一起工作了一段时间,但JFrame
s,paint()
,super
等的整个模型/结构在我的脑海中都是模糊不清的。
我需要一个明确的解释或链接来解释整个GUI系统是如何组织的。
答案 0 :(得分:13)
同样的事发生在我身上。实际上直到今天,我还没有完全了解它是如何工作的。
Swing是一个非常灵活的框架 - 可能过于灵活。灵活性带来了大量的抽象和抽象带来的混乱。 :)
我发现以下文章值得一读。他们帮助我更好地理解了Swing的大局。
他们很好地解释了模型和代表的工作方式。当我看到JLabel
,LabelUI
,ui.update
等时,它总是让我发疯。
答案 1 :(得分:2)
您是否看过Java Swing教程(点击here)?它在描述开发Swing应用程序的基础知识方面做得非常好。
答案 2 :(得分:2)
由于此问题标有JFrame
,因此我会建议一些链接,以了解JFrame
和其他顶级Swing容器的工作原理。
我还发现Swing已经(现在仍然)参与其中,每隔一段时间就需要查看Sun提供的文档 - 每次检查时,我似乎都学到了新的东西。
首先,Java API规范中的基础:JFrame
类。 Java API规范通常提供有关类的详细信息。在这种情况下,您会注意到有几个链接,例如The Java Tutorials中的How to Make Frames部分。
除此之外,我还建议您查看The Java Tutorials中的Lesson: Using Swing Components。本课程提供了有关如何使用Swing中提供的组件以及一些有用示例的说明。
对于更多细节,我在使用Swing时发现令人困惑的部分是所有不同类型的窗格,例如ContentPane
,RootPane
,GlassPane
。 Using Top-Level Containers部分提供有关顶级容器的容器层次结构的信息和有用的图表。 How to Use Root Panes部分详细介绍了有关Glass,Layered和Content Panes的详细信息。
答案 3 :(得分:1)
我发现Swing Explorer是了解组件层次结构的宝贵工具(特别是在复杂的GUI中)并查看属性(唉,只读:我们习惯了Firebug的方便!)。它有一个Eclipse插件。
答案 4 :(得分:0)
Filthy Rich Clients是一本关于Java UI的好书。它也涵盖了一些更高级的东西,但介绍和第一章很少解释基本的事情。
答案 5 :(得分:0)
如果在阅读Swing教程后,您发现您对更高级的主题感兴趣,您可能还希望看看Robinson和Vorobiev的Swing Second Edition。
答案 6 :(得分:0)
我发现只需在源代码中浏览(如果你使用的是NetBeans,则按住ctrl键点击一个名字)真的很有帮助。如果我在完成对话框中看到一个我不熟悉的方法,我只需点击“转到来源”然后环顾四周,直到我对它感到满意为止。