||||
Java可视化编程入门以来,一直被布局管理所困扰,在参考了NetBeans所生成的自动布局代码后,找到以下较为便捷的布局管理模式:
1.设置横向分布:
javax.swing.GroupLayout CtrlLayout = new javax.swing.GroupLayout(control);
control.setLayout(CtrlLayout);
CtrlLayout.setHorizontalGroup(
CtrlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(CtrlLayout.createSequentialGroup()
.addContainerGap()
.addGroup(CtrlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(CtrlLayout.createSequentialGroup()
.addComponent(Option, javax.swing.GroupLayout.DEFAULT_SIZE, 240, Short.MAX_VALUE))
.addGroup(CtrlLayout.createSequentialGroup()
.addContainerGap(30, Short.MAX_VALUE)
.addComponent(onOk, javax.swing.GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addContainerGap(30, Short.MAX_VALUE)
.addComponent(onCancel, javax.swing.GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addContainerGap(30, Short.MAX_VALUE)))
.addContainerGap()));
2.设置纵向分布:
CtrlLayout.setVerticalGroup(
CtrlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(CtrlLayout.createSequentialGroup()
.addContainerGap()
.addGroup(CtrlLayout.createSequentialGroup().addComponent(Option))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(CtrlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(onOk)
.addComponent(onCancel))
.addContainerGap()));
这种管理模式只区分相对位置,对窗口尺寸变化有很好的适应性,但局限于较为规则的排列,复杂排列有待于进一步的研究;
此外先前还接触过一种管理模式:
jContentPane = new javax.swing.JPanel();
java.awt.GridBagConstraints consGridBagConstraints2 = new java.awt.GridBagConstraints();
java.awt.GridBagConstraints consGridBagConstraints3 = new java.awt.GridBagConstraints();
java.awt.GridBagConstraints consGridBagConstraints1 = new java.awt.GridBagConstraints();
java.awt.GridBagConstraints consGridBagConstraints4 = new java.awt.GridBagConstraints();
java.awt.GridBagConstraints consGridBagConstraints6 = new java.awt.GridBagConstraints();
java.awt.GridBagConstraints consGridBagConstraints7 = new java.awt.GridBagConstraints();
java.awt.GridBagConstraints consGridBagConstraints5 = new java.awt.GridBagConstraints();
consGridBagConstraints1.insets = new java.awt.Insets(23,8,10,6);
consGridBagConstraints1.ipady = 6;
consGridBagConstraints1.ipadx = 8;
consGridBagConstraints1.gridy = 0;
consGridBagConstraints1.gridx = 0;
consGridBagConstraints4.insets = new java.awt.Insets(22,6,8,8);
consGridBagConstraints4.ipadx = 68;
consGridBagConstraints4.fill = java.awt.GridBagConstraints.HORIZONTAL;
consGridBagConstraints4.weightx = 1.0;
consGridBagConstraints4.gridy = 0;
consGridBagConstraints4.gridx = 1;
consGridBagConstraints2.insets = new java.awt.Insets(23,8,10,6);
consGridBagConstraints2.ipady = 6;
consGridBagConstraints2.ipadx = 8;
consGridBagConstraints2.gridy = 0;
consGridBagConstraints2.gridx = 2;
consGridBagConstraints5.insets = new java.awt.Insets(22,6,8,8);
consGridBagConstraints5.ipadx = 68;
consGridBagConstraints5.fill = java.awt.GridBagConstraints.HORIZONTAL;
consGridBagConstraints5.weightx = 1.0;
consGridBagConstraints5.gridy = 0;
consGridBagConstraints5.gridx = 3;
consGridBagConstraints3.insets = new java.awt.Insets(23,8,10,6);
consGridBagConstraints3.ipady = 6;
consGridBagConstraints3.ipadx = 8;
consGridBagConstraints3.gridy = 0;
consGridBagConstraints3.gridx = 4;
consGridBagConstraints6.insets = new java.awt.Insets(22,6,8,8);
consGridBagConstraints6.ipadx = 68;
consGridBagConstraints6.fill = java.awt.GridBagConstraints.HORIZONTAL;
consGridBagConstraints6.weightx = 1.0;
consGridBagConstraints6.gridy = 0;
consGridBagConstraints6.gridx = 5;
consGridBagConstraints7.insets = new java.awt.Insets(20,8,6,6);
consGridBagConstraints7.ipady = 3;
consGridBagConstraints7.gridy = 0;
consGridBagConstraints7.gridx = 6;
jContentPane.setLayout(new java.awt.GridBagLayout());
jContentPane.add(getLblPro(), consGridBagConstraints1);
jContentPane.add(getLblCity(), consGridBagConstraints2);
jContentPane.add(getLblCountry(), consGridBagConstraints3);
jContentPane.add(getComboPro(), consGridBagConstraints4);
jContentPane.add(getComboCity(), consGridBagConstraints5);
jContentPane.add(getComboCountry(), consGridBagConstraints6);
jContentPane.add(getBtnSearch(), consGridBagConstraints7);
这种模式清晰明了,但需要像素级的计算。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-29 08:11
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社