如何快速学习Java Swing并制作GUI界面?

7

我过去一年一直在编写Java代码,认为自己具备扎实的面向对象和基本面向对象设计技能。我想在现有项目的基础上构建一个Java GUI,这个项目不是很复杂,但我希望能尽快完成它。因此,我正在寻找一个API,可以将所有繁琐的实现细节抽象出来,让我专注于我的最小可行产品的核心。

我非常喜欢使用eclipse进行编码,不想浪费时间学习其他IDE。你有什么建议吗?


1
"你觉得我该怎么做?" 鉴于了解布局以制作可调整大小的跨平台GUI需要时间,而且考虑到你的时间限制,我建议你雇佣一些人。 - Andrew Thompson
@AndrewThompson,我并不是说我想要一个VB风格的组件移动器,但有很多方法可以解决这个问题,所以我只是向ST用户询问,看看他们能否从自己的经验中给我一些建议。 - Tom
1
我支持@AndrewThompson的观点。如果这一切都如此简单明了,那么在SO上就不会有那么多带有Swing标签的问题了。但是我建议您从Oracle Swing布局管理器教程开始学习。 - Robin
4个回答

12

这是Swing的速成课程。

首先要学习的是布局管理器。这是一个大障碍,它们很挑剔,你必须掌握它们。

第二个是监听器,没有它们什么都不会发生。

第三个是JComponents本身,你会在使用过程中慢慢学会它们。我建议使用NetBeans GUI构建器来玩耍并了解它们的感觉。

请注意,大多数JComponents都有不同的模型可以使用,而不是默认模型。

此外,我能找到的唯一区别于JPanel和JComponent之间的唯一区别是JPanels具有布局管理器。

各种Swing技巧和教程的好地方在这里:

 http://www.java2s.com/Tutorial/Java/0240__Swing/Catalog0240__Swing.htm

 http://www.java2s.com/Code/Java/Swing-Components/CatalogSwing-Components.htm

6
实际上,Netbeans中的GUI Builder是您快速创建GUI的最佳选择。如果您已经心中有数,知道它应该长什么样子的话,您可以在几分钟内完成创建。之后,唯一需要做的就是将其绑定到您的应用程序上;更具体地说,使按钮的ActionListeners确保执行它们应该做的事情。
当然,这取决于应用程序的大小。如果它很小,那么为它创建GUI很容易。另一方面,如果应用程序有2000个类,则可能会更加复杂,因为GUI可能会更加复杂。
如果应用程序可以建模为模型-视图-控制器架构,那将对您非常有帮助。

1
哎呀,他不是告诉我们"最好使用Eclipse编程"并且"不要浪费时间去学习另一个IDE的使用方法"吗?Netbeans完美地符合了"另一个IDE"的定义 :D - Andreas Dolk
@Andreas_D 说得对,你是正确的。但我认为Netbeans中的GUI Builder是最好的。我认为 X + Y < Z。其中 X 是学习如何使用Netbeans中的GUI Builder所需的时间,Y 是使用该GUI Builder构建GUI所需的时间,Z 是在Eclipse中构建GUI所需的时间。 - Radu Murzea
1
http://www.eclipse.org/windowbuilder/(但说实话,我还是更喜欢老式的方法:用笔和纸草拟布局,直接编写代码) - Andreas Dolk

4
我认为你会发现,在Java中没有一条通往GUI的皇家之路。每种方法都非常繁琐。即使你使用一个可视化的GUI构建器,仍然会非常麻烦。作为对你技能的长期投资,我建议你咬紧牙关学习如何通过编程方式构建GUI。这是每个有经验的Swing开发者所做的事情,因此最好直接朝着这个目标前进。你也可以从SWT/JFace开始,但该API比Swing更加困难和古怪。RCP在SWT/JFace上添加了另一层古怪和复杂性,因此我建议初学者远离它,实际上在任何时候除非制作大型GUI应用程序。

2
听起来 Eclipse RCP 可能是你的朋友(如果你正在考虑一个丰富的客户端解决方案)。只需获取一个用于插件开发的 Eclipse 发行版(比将插件安装到现有副本中要快得多),创建一个示例项目并开始编写代码。
对于 Web 应用程序,我建议使用 Play Framework。它与 Eclipse 集成得非常好。

还有NetBeans平台,如果你更喜欢Swing而不是SWT。但学习RCP需要时间。 - Puce
我不会推荐RCP给任何想要快速制作GUI的人。 - Marko Topolnik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接