Java NetBeans中的GroupLayout自动生成代码
在java编程将近4年后,我决定自己学习如何编写GUI类,因为到目前为止,我一直使用NetBeans GUI编辑器(我并不特别自豪,但它工作得很好,避免了我对组件布局的担忧) 问题是,我正在按照教程学习这个布局管理器,我发现它非常强大。现在我自己做了一个小例子,然后尝试在Netbeans GUI编辑器中做同样的事情,我发现两个代码之间存在一些差异,我想知道我是否遗漏了什么,或者Netbeans只是在GroupLayout定义中添加了无用的代码 这是我的目标: 这是我的: 正如你们所见,我只定义了平行组为水平组,顺序组为垂直组。但是Netbeans会自动生成以下代码:Java NetBeans中的GroupLayout自动生成代码,java,swing,netbeans,grouplayout,Java,Swing,Netbeans,Grouplayout,在java编程将近4年后,我决定自己学习如何编写GUI类,因为到目前为止,我一直使用NetBeans GUI编辑器(我并不特别自豪,但它工作得很好,避免了我对组件布局的担忧) 问题是,我正在按照教程学习这个布局管理器,我发现它非常强大。现在我自己做了一个小例子,然后尝试在Netbeans GUI编辑器中做同样的事情,我发现两个代码之间存在一些差异,我想知道我是否遗漏了什么,或者Netbeans只是在GroupLayout定义中添加了无用的代码 这是我的目标: 这是我的: 正如你们所见,我只定义
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(label, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
.addComponent(separator)
.addComponent(scrollPane))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(label)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(separator, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(scrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
.addContainerGap())
);
正如你所看到的,团队结构比我的稍微复杂一些。我只是想知道我是否弄错了,或者Netbeans只是不必要地添加了比需要的更多的组。欢迎Netbeans GUI设计器作为理解Swing的一种手段,而不是替代品。总结评论意见
- 虽然
是为自动生成代码而设计的,但它可以有效地手动使用,如图和所示。还可以将其集成到建议的混合开发方法中GroupLayout
- 经验丰富的开发人员明智地建议学习一个或多个流行的第三方布局,例如,或,这些布局从接受人类可读的文本参数中获得一些能力。我看到
在同一个类别中,只是有一个GroupLayout
- 在您的示例中,这两种布局具有不同的调整大小行为,这可能会影响其他选择。小心这个常见的问题
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(label, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
.addComponent(separator)
.addComponent(scrollPane))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(label)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(separator, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(scrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
.addContainerGap())
);