过氏分享 http://blog.sciencenet.cn/u/xirongguo

博文

Java布局

已有 5406 次阅读 2010-8-8 18:23 |个人分类:系统工程|系统分类:科研笔记|关键词:学者| java, 布局, layout

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);

这种模式清晰明了,但需要像素级的计算。



https://m.sciencenet.cn/blog-427394-351106.html

上一篇:C++操作注册表
下一篇:Jtable表头添加组件

1 黄富强

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-29 08:11

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部