学习Java Swing(使用GUI构建器还是手写代码?)

11

我知道基本的Java并想学习Swing,所以当然先看了Sun的网站,其中有这个教程。我打算开始学习它,但意识到它严重依赖于NetBeans,而我对此不确定。

我不确定是因为我想要的是学习,而不是一个漂亮的程序。

因此,我认为一旦我了解了它,像这样使用NetBeans会很不错,但我不想在没有任何头绪的情况下构建东西,当然这也可能会在以后引起问题。

我的第一个问题是这样做是否正确,我应该尽量避免严重依赖IDE吗?通过浏览网站上的问题,大多数人都推荐使用Sun教程,我只看到一个回答赞同我的想法,并链接到这个资源,看起来很有前途。或者我对Sun教程的理解不正确,它可能并不依赖于IDE,只是看起来像那样。

我的第二个问题是,如果你同意我的想法,你会推荐哪些资源(除了上面提到的)?

感谢您的回答。

7个回答

7
我不会说Sun在他们的教程中依赖NetBeans,而更多地是引用NetBeans,因为NetBeans是Sun的IDE。
我使用Eclipse进行Java开发。一个好的IDE可以帮助你处理繁琐的工作,这样你就可以集中精力解决问题。
如果你想学习Swing,我推荐《Java Swing权威指南(第三版)》。这本书逐步介绍了布局和小部件,使用并加强了GUI开发的MVC模式。
对于高级Swing开发人员,我推荐《Swing Hacks:Killer GUI的技巧和工具》。这本书向你展示了一些技巧,使你的GUI更加出色。

我很可能会买那本书,因为我更喜欢拥有实体书而不是在线参考资料,出于某种原因。 - Paul
我也是这样。即使有双显示器,我仍然更喜欢书籍而不是大多数在线教程。 - Gilbert Le Blanc
我大约在2000年左右从《Java核心技术》这本书中学习了Swing。希望它们现在仍然很好!http://www.amazon.com/Core-Java-TM-I-Fundamentals-8th/dp/0132354764/ref=pd_sim_b_1 - Tim Perry
这有点跑题,但我发现《Java(TM)编程语言》(第四版)http://www.amazon.com/Java-TM-Programming-Language-4th/dp/0321349806/ref=pd_sim_b_4 是最适合初学者入门Java的书籍。 - Gilbert Le Blanc
我认为学习任何非平凡的东西都需要一个真实的项目,所以即使一个漂亮的 GUI(我想这就是你所说的“程序”)不是你的目标,你也不能在尝试制作一个漂亮的 GUI 的过程中学到真正的东西。此外,我建议手工编码,因为 GUI 构建器可能会隐藏太多重要的东西,所以当抽象泄漏时,你将不知道该插入哪里。 - Geoffrey Zheng

1

我从来没有觉得Java中的GUI构建器很有用。虽然NetBeans有一个非常好的GUI构建器,但我强烈建议您自己构建GUI。

另一方面,您可能会发现Swing GUI有些冗长。有一些替代方案,例如Java-FX似乎有一种声明性语言,您可以在其中定义GUI,同时在Java中编写其他所有内容。

此外,Groovy在Swing上有一个漂亮的声明性语法层,可以使初学者更容易入门。

如果您想尝试Swing,请建议在Groovy或BeanShell中进行实验。只需快速输入:

f=new JFrame("My Frame")
f.setVisible(true)
f.setSize(300,600)

看到你的框架显示在屏幕上。 (Groovy和Beanshell都非常擅长处理Java语法-这并不意味着你不学习Swing-更像是你在解释器中学习它而不是编译器...

顺便说一下,如果你不想使用Java的语法,Groovy可以用类似于这样的语句使它更容易(可能稍微有点错误)

f=new JFrame(name="My Frame", visible=true, size=[300,600])

这将把原本需要3或4行的内容缩减为一行。


如果你认为编写Swing GUI代码很啰嗦,那么你应该开始考虑创建自己的辅助方法/类。 - Mot
我总是这样做,但我在与一个似乎对Java很新的人交谈。 - Bill K

1

这个教程主要是关于编程的。只有一个章节是关于NetBeans的。其余部分都是关于Swing的,可以在任何IDE中完成。

我不建议使用GUI Builder,因为正如你所说,你无法理解底层发生了什么。从简单的窗口开始,逐步添加GUI组件并与之交互。了解使用MVC方法的优势。

我能给的最好的建议是不要坐下来“学习”Swing。选择一个你感兴趣并且可以使用Swing完成的项目。通过有一个工作程序的目标,你将更好地吸收教程所提供的课程。


1
在我看来,这是Swing最大的缺陷之一。它被设计得如此复杂,以至于没有GUI构建器可以有效地应对它,并且仍然允许开发人员做他们想做的事情。即便花费了很多时间用Swing编写UI,我仍然不知道如何组织代码,使其既可读性强又易于维护。 - Joey
是的,那是我的想法。我正在考虑制作一个非常简单的游戏(或者可能先做一些更简单的东西),我认为Swing可以胜任。 - Paul

1

看起来你是一个Swing的初学者。我建议不要依赖Netbeans来开发Swing UI。尝试通过编写代码来设计UI。这将提高你对Swing的知识基础,然后如果你愿意,可以使用可用的GUI构建器。


1

我总是最好以低级方式学习新的框架。

  1. 如果需要使用命令行编译源文件,学习一门新的编程语言对我来说是最好的选择。使用像xCode这样的IDE会使理解基础知识变得更加困难。
  2. 我学习理解Eclipse平台的基本概念非常艰难,因为几乎所有的教程都只告诉你在Eclipse GUI中应该点击哪里。没有最新的教程告诉您应该添加到哪个XML文件和这些东西如何相关联。幸运的是,这对于Swing来说简单得多。

因此,我的建议是:不要在学习时使用GUI构建器,因为它会隐藏所有有助于真正理解发生了什么的重要内容。使用一个好的Java/Swing教程并开始键入您的应用程序。当您理解了基础知识后,可以使用GUI构建器进行原型设计。


0

实际上,这些教程多次引用了Netbeans,但通常仍然告诉你如何在代码中完成任务。一旦你对Swing的工作原理有了相当好的掌握,你可能会在需要时阅读每一个教程。

例如使用Swing组件对每个标准UI组件都有(或多或少)深入的注释,而布置组件则详细介绍了标准布局管理器。

这些是我最常回头查看的东西,除了与Netbeans简单接触之外,我再也没有碰过它的GUI构建器。


0

我认为你应该先学习语言。使用集成开发环境可以提高效率,但是如果你需要使用不同的IDE,可能会导致问题。我发现这本书非常有用,Java编程入门。书中所有的例子都是代码。


那本书看起来只是针对Java,但我正在学习的是具体的Swing,我已经对Java有了相当不错的掌握。 - Paul
它还有专门关于Swing的主题。以及如何制作具有相对基本GUI的应用程序。您可以将其用作Swing的入门介绍。 - npinti

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