Java Swing GroupLayout分组布局的实现代码
1.概述
官方JavaDocsApi:javax.swing.GroupLayout
GroupLayout,分组布局管理器。它将组建按层次分组,以决定它们在Container中的位置。GroupLayout主要供生成器使用(生成并行组和串行组)。分组由GroupLayout.Group类的实例来完成,每个组可以包含任意数量的元素(Group、Component或Gap)。
GroupLayout支持两种组:
- 串行组(sequentialgroup):按顺序沿指定方向(水平/垂直)逐个放置元素。
- 并行组(parallelgroup):沿指定方向(水平/垂直)并行排列元素,能够以四种不同方式对齐其子元素。
PS:串行和并行根据不同的方向(水平/垂直方向),元素的排列方式也不同(从上到下或从左到右)。
Group的创建以及元素的添加:
//先创建分组布局,并关联容器 GroupLayoutlayout=newGroupLayout(panel); //创建串行组 GroupLayout.SequentialGroupseqGroup=layout.createSequentialGroup(); //添加组元素 seqGroup.addGroup(group); //添加组件元素 seqGroup.addComponent(component); //添加间隙 seqGroup.addGap(size); //创建并行组 GroupLayout.ParallelGroupparalGroup=layout.createParallelGroup(); //添加组元素(可指定对齐方式) paralGroup.addGroup([alignment,]group); //添加组件元素(可指定对齐方式) paralGroup.addComponent(component,[alignment]); //添加间隙 paralGroup.addGap(size);
GroupLayout对X轴(水平方向)和Y轴(竖直方向)单独对待,因此需要给GroupLayout在水平和竖直方向上分别指定一个组,来分别确定组件在水平方向和竖直方向上的位置。
设置GroupLayout两个方向上的组:
//指定布局的水平组(确定组件在X轴方向上的位置) GroupLayout.setHorizontalGroup(GroupLayout.Groupgroup); //指定布局的垂直组(确定组件在Y轴方向上的位置) GroupLayout.setVerticalGroup(GroupLayout.Groupgroup);
2.代码实例
packagecom.xiets.swing;
importjavax.swing.*;
publicclassMain{
publicstaticvoidmain(String[]args){
JFramejf=newJFrame("测试窗口");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//创建内容面板容器
JPanelpanel=newJPanel();
//创建分组布局,并关联容器
GroupLayoutlayout=newGroupLayout(panel);
//设置容器的布局
panel.setLayout(layout);
//创建组件
JButtonbtn01=newJButton("Button01");
JButtonbtn02=newJButton("Button02");
JButtonbtn03=newJButton("Button03");
JButtonbtn04=newJButton("Button04");
JButtonbtn05=newJButton("Button05");
//自动创建组件之间的间隙
layout.setAutoCreateGaps(true);
//自动创建容器与触到容器边框的组件之间的间隙
layout.setAutoCreateContainerGaps(true);
/*
*水平组(仅确定X轴方向的坐标/排列方式)
*
*水平串行:水平排列(左右排列)
*水平并行:垂直排列(上下排列)
*/
//水平并行(上下)btn01和btn02
GroupLayout.ParallelGrouphParalGroup01=layout.createParallelGroup().addComponent(btn01).addComponent(btn02);
//水平并行(上下)btn03和btn04
GroupLayout.ParallelGrouphParalGroup02=layout.createParallelGroup().addComponent(btn03).addComponent(btn04);
//水平串行(左右)hParalGroup01和hParalGroup02
GroupLayout.SequentialGrouphSeqGroup=layout.createSequentialGroup().addGroup(hParalGroup01).addGroup(hParalGroup02);
//水平并行(上下)hSeqGroup和btn05
GroupLayout.ParallelGrouphParalGroup=layout.createParallelGroup().addGroup(hSeqGroup).addComponent(btn05,GroupLayout.Alignment.CENTER);
layout.setHorizontalGroup(hParalGroup);//指定布局的水平组(水平坐标)
/*
*垂直组(仅确定Y轴方向的坐标/排列方式)
*
*垂直串行:垂直排列(上下排列)
*垂直并行:水平排列(左右排列)
*/
//垂直并行(左右)btn01和btn03
GroupLayout.ParallelGroupvParalGroup01=layout.createParallelGroup().addComponent(btn01).addComponent(btn03);
//垂直并行(左右)btn02和btn04
GroupLayout.ParallelGroupvParalGroup02=layout.createParallelGroup().addComponent(btn02).addComponent(btn04);
//垂直串行(上下)vParalGroup01,vParalGroup02和btn05
GroupLayout.SequentialGroupvSeqGroup=layout.createSequentialGroup().addGroup(vParalGroup01).addGroup(vParalGroup02).addComponent(btn05);
layout.setVerticalGroup(vSeqGroup);//指定布局的垂直组(垂直坐标)
jf.setContentPane(panel);
jf.pack();
jf.setLocationRelativeTo(null);
jf.setVisible(true);
}
}
结果展示:
5个Button的排列说明:
沿X轴方向(水平方向):
- Button01和Button02并行成Group01
- Button03和Button04并行成Group02
- 将Group01和Group02串行成Group03
- 将Group03和Butotn05并行
沿Y轴方向(竖直方向):
- Button01和Button03并行成Group01
- Button02和Button04并行成Group02
- 将Group01、Group02和Button05串行
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。