Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 458|回复: 0

[Swing学习]Swing布局管理器GroupLayout的使用方法

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-13 23:58:31 | 显示全部楼层 |阅读模式
    GroupLayout 是一个 LayoutManager,它将组件按层次分组,以决定它们在Container中的位置。GroupLayout 主要供生成器使用,但也可以手工编码。分组由 Group 类的实例来完成。

         GroupLayout 支持两种组。串行组 (sequential group) 按顺序一个接一个地放置其子元素。并行组(parallel group) 能够以四种方式对齐其子元素。     每个组可以包含任意数量的元素,其中元素有 Group、Component 或间隙 (gap)。间隙可被视为一个具有最小大小、首选大小和最大大小的不可见组件。此外,GroupLayout 还支持其值取自 LayoutStyle 的首选间隙。      GroupLayout是一个很重要的布局管理器,在jdk 1.6才加入,配合其它的管理器可以实现很好的界面。  GroupLayout必须要设置它GroupLayout.setHorizontalGroup和GroupLayout.setVerticalGroup.  
      
       
       

         
       

         
       
      
          GroupLayout.setHorizontalGroup是指按照水平来确定,下面例子"账号"和"密码"是一个级别的,其它的组件也是一个级别的。详情请看代码.    GroupLayout.setVerticalGroup.是按照垂直来确定的。他们的级别是按照Group去设置组件的优先级别,级别越高就显示越上面。     GroupLayout.setHorizontalGroup(SequentialGroup(ParallelGroup(component))); 大概就是按照这个顺序去添加,当然不是就这么简单设置,多个component添加到ParallelGroup,然后多个ParallelGroup添加到SequentialGroup里面,  然后就设置到GroupLayout。     下面的实例,设置GroupLayout.setHorizontalGroup,就是把2和4添加到一个 ParallelGroup.addComponent(component),其它1,3,5,6,7,8添加到另一个ParallelGroup,然后把这两个ParallelGroup按照顺序添加到SequentialGroup.addGrou(ParallelGroup);


    1.     /**
    2.     * @author :陶伟基 ,微博:http://weibo.com/taoandtao
    3.     * @date :2012/12/10
    4.     * @place:广州大学华软软件学院
    5.     */
    6.     import javax.swing.GroupLayout;
    7.     import javax.swing.GroupLayout.Alignment;
    8.     import javax.swing.JButton;
    9.     import javax.swing.JLabel;
    10.     import javax.swing.JPasswordField;
    11.     import javax.swing.JRadioButton;
    12.     import javax.swing.JTextField;
    13.     public class MyFrame extends javax.swing.JFrame {
    14.         public static void main(String[] args) {
    15.             MyFrame f = new MyFrame();
    16.         }
    17.      
    18.         JLabel label1;
    19.         JLabel label2;
    20.         JLabel label3;
    21.         JTextField tf;
    22.         JPasswordField psf;
    23.         JRadioButton rb1;
    24.         JRadioButton rb2;
    25.      
    26.         JButton bt1;
    27.         JButton bt2;
    28.      
    29.         public MyFrame() {
    30.             this.setVisible(true);
    31.             this.setSize(250, 220);
    32.             this.setVisible(true);
    33.             this.setLocation(400, 200);
    34.      
    35.             label1 = new JLabel("华软BBS快捷登陆");
    36.             label2 = new JLabel("账号:");
    37.             label3 = new JLabel("密码:");
    38.             tf = new JTextField();
    39.             psf = new JPasswordField();
    40.             rb1 = new JRadioButton("记住密码");
    41.             rb2 = new JRadioButton("自动登陆");
    42.             bt1 = new JButton("登陆");
    43.             // 为指定的 Container 创建 GroupLayout
    44.             GroupLayout layout = new GroupLayout(this.getContentPane());
    45.             this.getContentPane().setLayout(layout);
    46.             //创建GroupLayout的水平连续组,,越先加入的ParallelGroup,优先级级别越高。
    47.             GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
    48.             hGroup.addGap(5);//添加间隔
    49.             hGroup.addGroup(layout.createParallelGroup().addComponent(label2)
    50.                     .addComponent(label3));
    51.             hGroup.addGap(5);
    52.             hGroup.addGroup(layout.createParallelGroup().addComponent(label1)
    53.                     .addComponent(psf).addComponent(rb1).addComponent(rb2)
    54.                     .addComponent(tf).addComponent(bt1));
    55.             hGroup.addGap(5);
    56.             layout.setHorizontalGroup(hGroup);
    57.             //创建GroupLayout的垂直连续组,,越先加入的ParallelGroup,优先级级别越高。
    58.             GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
    59.             vGroup.addGap(10);
    60.             vGroup.addGroup(layout.createParallelGroup().addComponent(label1));
    61.             vGroup.addGap(10);
    62.             vGroup.addGroup(layout.createParallelGroup().addComponent(label2)
    63.                     .addComponent(tf));
    64.             vGroup.addGap(5);
    65.             vGroup.addGroup(layout.createParallelGroup().addComponent(label3)
    66.                     .addComponent(psf));
    67.             vGroup.addGroup(layout.createParallelGroup().addComponent(rb1));
    68.      
    69.             vGroup.addGroup(layout.createParallelGroup().addComponent(rb2));
    70.             vGroup.addGroup(layout.createParallelGroup(Alignment.TRAILING)
    71.                     .addComponent(bt1));
    72.             vGroup.addGap(10);
    73.             //设置垂直组
    74.             layout.setVerticalGroup(vGroup);
    75.         }
    76.     }
    复制代码


      
      
       
       

         
       

         
       
      
    复制代码

    源码下载:http://file.javaxxz.com/2014/11/13/235830671.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 07:41 , Processed in 0.292734 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表