GroupLayout:值得学习吗?
Posted
技术标签:
【中文标题】GroupLayout:值得学习吗?【英文标题】:GroupLayout: Is it worth learning? 【发布时间】:2010-10-07 07:30:35 【问题描述】:我对 java 比较陌生(特别是 swing),最近一直在制作一些相当简单的应用程序,边学边学。最新的一个有很多表单组件,例如 JLabels、JTextFields、JButtons 等。所有这些组件都使用可视化构建器放置在 NetBeans 中。我不得不说我并没有真正使用 NetBeans,我只是在设计 GUI 并将代码直接复制到 Eclipse。
我的问题是:是否值得深入了解 GroupLayout 和手动编码(因此可以更好地控制我的 GUI)还是继续按原样继续?
【问题讨论】:
【参考方案1】:我会说值得花一些时间来了解 GroupLayout
,因为了解您的 IDE 正在做什么总是一个好主意。了解幕后发生的事情实际上会让您更加灵活,因为如果您最终遇到无法访问 Netbeans 的情况,您将知道如何复制它为您生成的布局。此外,在您获得相当多的经验之后,您可能最终会节省总体时间。与使用可视化编辑器相比,您通常可以更快地手动开发简单的 GUI,尤其是考虑到将代码从 Netbeans 复制并粘贴到 Eclipse 所花费的时间。
当然,学习如何手动使用 GroupLayout
也可以让您更轻松地过渡到 Java 提供的任何其他布局管理器,这反过来又可以简化代码并节省更多时间。
【讨论】:
我也在想这个;我可能无法方便地从 NetBeans 复制代码,但我需要制作一个相对复杂的 GUI——在我需要制作更简单的 GUI 的情况下,我不需要求助于 NetBeans ,而是在更简单的布局管理器上构建它。【参考方案2】:GroupLayout
并不是真正为手动编码而设计的;它比任何其他布局管理器都要详细得多(可能GridBagLayout
除外)。既然你说你是 Swing 新手,我建议从基本布局管理器开始(BorderLayout
和 FlowLayout
);您可以通过右键单击面板或框架并选择“设置布局”在 NetBeans 中使用它们。熟悉这些之后,我建议你查看MiGLayout
。
回答您的另一个问题:我认为 NetBeans 表单设计器类似于计算器;如果您已经了解基础知识,这是一个很棒的工具,但如果您只是将它用作拐杖,您将永远学不到任何东西。
【讨论】:
我认为 SpringLayout 更加冗长。 ;) 我使用了 LWUIT 附带的 GroupLayout,它还不错,但也不容易。我喜欢 JGoodies FormLayout,因为 MiG Layout 是它的继任者,所以我强烈推荐 MiG。无论如何,了解基本布局也很好。 我已经熟悉 BorderLayout - 但实际上 GroupLayout 是我认为最适合我目前正在构建的应用程序的。至于使用 NetBeans 作为拐杖 - 我只是不喜欢 IDE,发现它在某些部分不必要地过于复杂【参考方案3】:GroupLayout
值得学习以编程方式使用。
我使用GroupLayout
作为我创建的几乎每个使用标准 Swing 组件的面板的默认布局。我发现结果总是非常令人赏心悦目,并且调整大小非常好。我总是设置这些选项:
groupLayout.setAutoCreateGaps(true);
groupLayout.setAutoCreateContainerGaps(true);
反复使用这种布局不仅给了我漂亮的布局,而且给了我所需的低级经验,能够将一些复杂的面板与许多在编译时未知的组件组合在一起。我还发现,当组件的数量是动态的时,我可以布置所有组件,然后使用setVisible(boolean)
打开和关闭它们,而无需重新创建水平和垂直组。
【讨论】:
【参考方案4】:大多数更复杂的布局管理器都不是手动编码的。你可以做到,但几个月后你可能会难以理解自己的布局。 GroupLayout 也不例外,更糟糕的是它根本不直观,你必须扭曲你的想法,强迫你的布局进入 GroupLayout 术语。
我认为这些布局管理器不值得学习。 GridBagLayout 是最糟糕的。它有比你想象的更多的选择,而且它们似乎从来没有像你认为的那样做。 MiGLayout 非常强大,相当直观,并且主要执行您认为的操作,但我仍然认为它太强大且太复杂了,这对程序员来说是件好事。 GroupLayout 没有那么强大,没有那么直观,也不值得这么麻烦。
多年来我对 Java GUI 进行布局和维护的建议是学习和使用最强大的布局管理器,您可以在两个小时内掌握并且永远不会忘记,然后使用此布局管理器使用嵌套容器来布局您的 GUI和基本的 BorderLayout/GridLayout/FlowLayout/BoxLayout。
【讨论】:
-1 GroupLayout 对我来说似乎很直观。当然,它很冗长,但这是我们正在谈论的 Java。只需阅读文档,然后关注this example。之后,开始在“现实生活”的 GUI 项目中使用它。我想你会发现它并没有最初看起来那么糟糕。 -1 我同意@bcat。我还想直接提出最后一段中的建议。最好的结果总是来自需要超过两个小时的掌握。我永远不会忘记如何使用GroupLayout
,只要我继续使用它。我也不明白GroupLayout
怎么可能比使用嵌套容器 更复杂。如果有人告诉我让它变得复杂,我会这样做。【参考方案5】:
如果您倾向于使用 VB 程序样式,您可以花时间在 GroupLayouts 上。否则,请尝试通过合适的示例来了解 GridBagLayout Manager。对于那些希望每个 gui 组件都在我们的笔控制下(我们应该编写而不是 IDE)的人来说,这是最好的。一个好的 java 开发人员应该花时间在 gui 对象和业务对象上,并且必须知道如何将它们分开。 L.Sankaranarayanan。
【讨论】:
以上是关于GroupLayout:值得学习吗?的主要内容,如果未能解决你的问题,请参考以下文章