GroupLayout是一个LayoutManager它将组件按层次分组以决定它们在Container中的位置GroupLayout主要供生成器使用但也可以手工编码分组由Group类的实例来完成GroupLayout支持两种组串行组 (sequential group) 按顺序一个接一个地放置其子元素并行组 (parallel group) 能够以四种方式对齐其子元素 每个组可以包含任意数量的元素其中元素有GroupComponent或间隙 (gap)间隙可被视为一个具有最小大小首选大小和最大大小的不可见组件此外GroupLayout还支持其值取自LayoutStyle的首选间隙 GroupLayout是一个很重要的是额布局管理器在jdk 才加入配合其它的管理器可以实现很好的界面 GroupLayout必须要设置它的GroupLayoutsetHorizontalGroup和GroupLayoutsetVerticalGroup GroupLayoutsetHorizontalGroup是指按照水平来确定下面例子账号和密码是一个级别的其它的组件也是一个级别的详情请看代码 GroupLayoutsetVerticalGroup是按照垂直来确定的他们的级别是按照Group去设置组件的优先级别级别越高就显示越上面 GroupLayoutsetHorizontalGroup(SequentialGroup(ParallelGroup(component))); 大概就是按照这个顺序去添加当然不是就这么简单设置多个component添加到ParallelGroup然后多个ParallelGroup添加到SequentialGroup里面 然后就设置到GroupLayout 下面的实例设置GroupLayoutsetHorizontalGroup就是把和添加到一个 ParallelGroupaddComponent(component)其它添加到另一个ParallelGroup然后把这两个ParallelGroup按照顺序添加到SequentialGroupaddGrou(ParallelGroup); /** *@author陶伟基微博 *@date// *@place广州大学华软软件学院 */ importjavaxswingGroupLayout; importjavaxswingGroupLayoutAlignment; importjavaxswingJButton; importjavaxswingJLabel; importjavaxswingJPasswordField; importjavaxswingJRadioButton; importjavaxswingJTextField; publicclassMyFrameextendsjavaxswingJFrame{ publicstaticvoidmain(String[]args){ MyFramef=newMyFrame(); } JLabellabel; JLabellabel; JLabellabel; JTextFieldtf; JPasswordFieldpsf; JRadioButtonrb; JRadioButtonrb; JButtonbt; JButtonbt; publicMyFrame(){ thissetVisible(true); thissetSize(); thissetVisible(true); thissetLocation(); label=newJLabel(华软BBS快捷登陆); label=newJLabel(账号); label=newJLabel(密码); tf=newJTextField(); psf=newJPasswordField(); rb=newJRadioButton(记住密码); rb=newJRadioButton(自动登陆); bt=newJButton(登陆); //为指定的Container创建GroupLayout GroupLayoutlayout=newGroupLayout(thisgetContentPane()); thisgetContentPane()setLayout(layout); //创建GroupLayout的水平连续组越先加入的ParallelGroup优先级级别越高 GroupLayoutSequentialGrouphGroup=layoutcreateSequentialGroup(); hGroupaddGap();//添加间隔 hGroupaddGroup(layoutcreateParallelGroup()addComponent(label) addComponent(label)); hGroupaddGap(); hGroupaddGroup(layoutcreateParallelGroup()addComponent(label) addComponent(psf)addComponent(rb)addComponent(rb) addComponent(tf)addComponent(bt)); hGroupaddGap(); layoutsetHorizontalGroup(hGroup); //创建GroupLayout的垂直连续组越先加入的ParallelGroup优先级级别越高 GroupLayoutSequentialGroupvGroup=layoutcreateSequentialGroup(); vGroupaddGap(); vGroupaddGroup(layoutcreateParallelGroup()addComponent(label)); vGroupaddGap(); vGroupaddGroup(layoutcreateParallelGroup()addComponent(label) addComponent(tf)); vGroupaddGap(); vGroupaddGroup(layoutcreateParallelGroup()addComponent(label) addComponent(psf)); vGroupaddGroup(layoutcreateParallelGroup()addComponent(rb)); vGroupaddGroup(layoutcreateParallelGroup()addComponent(rb)); vGroupaddGroup(layoutcreateParallelGroup(AlignmentTRAILING) addComponent(bt)); vGroupaddGap(); //设置垂直组 layoutsetVerticalGroup(vGroup); } } |