【问题标题】:Learning Java Swing (GUI builder or not?) [closed]学习 Java Swing(GUI 构建器与否?)[关闭]
【发布时间】:2010-05-18 23:07:58
【问题描述】:

嗯,我知道基本的 Java 并且想学习 Swing,所以当然首先查看了 Sun 网站,this tutorial 所在的位置。我打算启动它,但意识到它严重依赖 NetBeans,对此我不确定。

我不确定,因为我想要实现的是学习,而不是一个好看的程序。

所以我认为一旦我知道了像这样使用 NetBeans 会很棒,但我不想在不知道下面发生了什么的情况下构建东西,当然这也可能在以后引起问题。

我的第一个问题是这样做是否正确,我是否应该尽量不过度依赖 IDE?浏览网站上大多数人推荐使用 Sun 教程的问题,我只看到一个与我的想法一致的答案,他们链接到 this resource,看起来很有希望。 或者我对 Sun 教程的理解有误,也许它不依赖于 IDE,看起来就是这样。

我的第二个问题是,如果您同意我的观点,您会推荐哪些资源(除了上述资源)?

感谢您的回答。

【问题讨论】:

    标签: java swing netbeans


    【解决方案1】:

    我不会说 Sun 在他们的教程中像引用 NetBeans 那样依赖 NetBeans,因为 NetBeans 是 Sun 的 IDE。

    我使用 Eclipse 进行 Java 开发。一个好的 IDE 可以帮助您处理繁忙的工作,让您可以专注于手头的问题。

    如果你想学习 Swing,我推荐The Definitive Guide to Java Swing, Third Edition。本书将带您逐步了解布局和小部件,使用和加强 GUI 开发的 MVC 模式。

    对于高级 Swing 开发人员,我推荐Swing Hacks: Tips and Tools for Killer GUIs。这本书向你展示了一些让你的 GUI 流行起来的技巧。

    【讨论】:

    • 我可能会得到那本书,出于某种原因,我更喜欢拥有某些东西的硬拷贝而不是在线参考。
    • 我也是这样。即使有双显示器,与大多数在线教程相比,我更喜欢一本书。
    • 我在 2000 年左右从 Core Java 书籍中学习了 Swing。希望他们仍然一样好! amazon.com/Core-Java-TM-I-Fundamentals-8th/dp/0132354764/…
    • 这有点离题了,但我发现 Java(TM) Programming Language, The (4th Edition) amazon.com/Java-TM-Programming-Language-4th/dp/0321349806/… 是帮助人们开始使用 Java 的最佳书籍。
    • 我认为学习任何重要的东西都需要一个真实世界的项目,所以即使一个漂亮的 GUI(我想这就是你所说的“程序”)不是你的目标,你不能学习真实的东西,而无需尝试制作漂亮的 GUI。另外我建议手动编码,因为 GUI 构建器可能隐藏了太多重要的东西,所以当抽象泄漏时你不知道在哪里插入。
    【解决方案2】:

    本教程主要是关于代码的。这实际上只是关于 NetBeans 的一章。其余部分是关于 Swing 的,可以在任何 IDE 中完成。

    我不建议使用 GUI 构建器,因为正如您所说,您无法理解下面发生的事情。从简单的窗口开始,逐步通过添加 GUI 组件并与它们交互来工作。了解 MVC 做事方式的优势。

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

    【讨论】:

    • 恕我直言,这是 Swing 的最大缺点之一。它被认为如此复杂,以至于没有 GUI 构建器可以有效地应对它,并且仍然允许开发人员做他们想做的事情。在使用 Swing 编写 UI 数小时后,我仍然不知道如何构建我的代码以使其仍然具有可读性和可维护性。
    • 是的,这就是我的想法。我正在考虑制作一个非常简单的游戏(或者先做一些更简单的游戏),我认为 Swing 可以解决这个问题。
    【解决方案3】:

    看来你是秋千的初学者。我建议不要依赖 Netbeans 来开发 Swing UI。尝试仅通过编写代码来设计 UI。这将提高您的挥杆知识基础,然后您可以根据需要使用可用的 GUI 构建器。

    【讨论】:

      【解决方案4】:

      无论如何,我从未发现 GUI 构建器在 Java 中非常有用。 NetBeans 有一个非常好的,但我强烈建议您构建自己的 GUI。

      另一方面,您可能会发现 Swing GUI 有点冗长。还有其他选择,Java-FX 显然有一种声明性语言,您可以在用 Java 编写其他所有内容时定义您的 GUI。

      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 行更改为 1 行。

      【讨论】:

      • 如果您认为编写 Swing GUI 很冗长,您应该开始考虑创建自己的辅助方法/类。
      • @mklhmnn 我总是这样做,但我正在和一个看起来对 Java 很陌生的人交谈。
      【解决方案5】:

      我总是以最底层的方式学习新框架。

      1. 事实证明,如果我必须使用命令行编译源文件,那么学习一门新的编程语言对我来说是最好的选择。使用像 xCode 这样的 IDE 会使理解基础知识变得更加困难。
      2. 我很难学会理解 Eclipse 平台的基本概念,因为几乎所有教程都只是告诉您在 Eclipse GUI 中单击。没有最新的教程告诉将哪些行添加到什么 XML 文件以及这些内容如何组合在一起。幸运的是,这对于 Swing 来说要简单得多。

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

      【讨论】:

        【解决方案6】:

        实际上,这些教程确实多次引用 Netbeans,但通常仍会告诉您如何在代码中做事。一旦您对 Swing 的一般工作原理有了相当好的了解,您可能会在需要时阅读其中的每一个。

        例如,Using Swing Components 对每个标准 UI 组件(或多或少)有深入的说明,Laying Out Componnents 有关于标准布局管理器的详细信息。

        那些——至少对我来说——是我回归最多的事情。除了与 Netbeans 的短暂接触之外,我再也没有接触过它的 GUI 构建器。

        【讨论】:

          【解决方案7】:

          我认为你应该先学习语言。使用 IDE 可以提高您的效率,但是我认为如果您需要使用不同的 IDE,可能会导致问题。我觉得这本书非常有用,Introduction to Java Programming。书中所有的例子都是代码。

          【讨论】:

          • 那本书看起来是专为 Java 写的,但它是专门针对我正在学习的 Swing 的,我已经对 Java 有了一定的了解
          • 它也有专门针对 Swing 的主题。以及如何做具有相对基本 GUI 的应用程序。您可以将其用作 Swing 的介绍。