GroupLayout:值得学习吗?

我对java(特别是swing)相对较新,并且最近一直在制作一些相当简单的应用程序,随时随地学习。 最新版本具有许多表单组件,如JLabel,JTextFields,JButtons等。所有组件都使用可视化构建器放置在NetBeans中。 我不得不说我并没有真正接受NetBeans,而是真正设计了GUI并将代码直接复制到Eclipse。

我的问题是:是否值得对GroupLayout进行非常好的理解并手工编码(因此可以更好地控制我的GUI)或继续按原样继续?

我认为值得花一些时间来了解GroupLayout ,只是因为了解IDE正在做什么总是一个好主意。 了解幕后发生的事情实际上会让您更加灵活,因为如果您在无法访问Netbeans的情况下结束,您将知道如何复制它为您生成的布局。 此外,在你获得了相当多的经验之后,你可能最终会节省时间。 您通常可以手动开发一个简单的GUI,而不是使用可视化编辑器,特别是考虑到将代码从Netbeans复制并粘贴到Eclipse所需的时间。

当然,学习如何手动使用GroupLayout也可以让您更轻松地转换到Java提供的任何其他布局管理器,这反过来又可以使代码更简单,节省更多时间。

GroupLayout并非真正用于手工编码; 它比任何其他布局管理器(除了可能的GridBagLayout )更冗长,更冗长。 既然你说你是Swing的新手,我建议从基本布局管理器( BorderLayoutFlowLayout )开始; 您可以通过右键单击面板或框架并选择“设置布局”在NetBeans中使用它们。 熟悉这些之后,我建议您查看MiGLayout

回答你的另一个问题:我认为NetBeans表单设计器类似于计算器; 如果你已经掌握了基础知识,这是一个很棒的工具,但如果你只是用它作为拐杖,你将永远不会学到任何东西。

GroupLayout值得学习以编程方式使用。

我使用GroupLayout作为我创建的几乎每个使用标准Swing组件的面板的默认布局。 我发现结果总是非常令人愉悦并且很好地resize。 我总是设置这些选项:

 groupLayout.setAutoCreateGaps(true); groupLayout.setAutoCreateContainerGaps(true); 

重复使用这种布局不仅给了我漂亮的布局,而且它给了我一些低级别的经验,能够将一些复杂的面板与编译时未知的许多组件组合在一起。 我还发现,当组件的数量是动态的时,我可以布置所有组件,然后使用setVisible(boolean)打开和关闭它们,而无需重新创建水平和垂直组。

大多数更复杂的布局管理器并不是手工编码的。 你可以做到,但是从现在起几个月你就可能无法理解自己的布局。 GroupLayout也不例外,更糟糕的是它根本不直观,你必须扭曲你的想法,迫使你的布局成为GroupLayout术语。

我认为这些布局管理者不值得学习。 GridBagLayout是最糟糕的。 它有比你想象的更多的选择,而且他们似乎从来没有做过你认为他们做的事情。 MiGLayout非常强大,相当直观,而且大多数都是你认为它做的,但我仍然认为它太强大而且太复杂了,程序员自己也不错。 GroupLayout不是那么强大,不直观,不值得麻烦。

我多年来制定Java GUI并维护它的建议是学习和使用你能在两小时内掌握的最强大的布局管理器,你永远不会忘记,然后用嵌套容器使用这个布局管理器和基本布局GUI。的BorderLayout /网格布局/的FlowLayout / BoxLayout的。

如果您倾向于VB程序样式,那么您可以花时间在GroupLayouts上。 否则尝试使用合适的示例来理解GridBagLayout Manager。 对于那些希望每个gui组件都应该在我们的笔控制之下的人来说是最好的(我们应该编写而不是IDE)。 一个优秀的Java开发人员应该花时间在gui对象和业务对象上,并且必须知道如何分离它们。 L.Sankaranarayanan。