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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。