学习 Java 布局 groupLayout

学习链接: http://www.cnblogs.com/taoweiji/archive/2012/12/10/2812221.html

    GroupLayout 是一个 LayoutManager,它将组件按层次分组,以决定它们在 Container 中的位置。GroupLayout 主要供生成器使用,但也可以手工编码。分组由 Group 类的实例来完成。GroupLayout 支持两种组。串行组 (sequential group) 按顺序一个接一个地放置其子元素。并行组 (parallel group) 能够以四种方式对齐其子元素。

每个组可以包含任意数量的元素,其中元素有 GroupComponent 或间隙 (gap)。间隙可被视为一个具有最小大小、首选大小和最大大小的不可见组件。此外,GroupLayout 还支持其值取自 LayoutStyle 的首选间隙。

GroupLayout必须要设置它的GroupLayout.setHorizontalGroup和GroupLayout.setVerticalGroup。

GroupLayout.setHorizontalGroup是指按照水平来确定,下面例子“账号”和“密码”是一个级别的,其它的组件也是一个级别的。详情请看代码

GroupLayout.setVerticalGroup。是按照垂直来确定的。他们的级别是按照Group去设置组件的优先级别,级别越高就显示越上面。

GroupLayout.setHorizontalGroup(SequentialGroup(ParallelGroup(component)));

例子:

package test;

 import javax.swing.GroupLayout;
 import javax.swing.GroupLayout.Alignment;
 import javax.swing.JButton;
 import javax.swing.JLabel;
 import javax.swing.JPasswordField;
 import javax.swing.JRadioButton;
 import javax.swing.JTextField;
 public class test extends javax.swing.JFrame {
     public static void main(String[] args) {
         test f = new test();
     }

     JLabel label1;
     JLabel label2;
     JLabel label3;
     JTextField tf;
     JPasswordField psf;
     JRadioButton rb1;
     JRadioButton rb2;

     JButton bt1;
     JButton bt2;

     public test() {
         this.setVisible(true);
         this.setSize(250, 220);
         this.setVisible(true);
         this.setLocation(400, 200);

         label1 = new JLabel("华软BBS快捷登陆");
         label2 = new JLabel("账号:");
         label3 = new JLabel("密码:");
         tf = new JTextField();
         psf = new JPasswordField();
         rb1 = new JRadioButton("记住密码");
         rb2 = new JRadioButton("自动登陆");
         bt1 = new JButton("登陆");
         // 为指定的 Container 创建 GroupLayout
        GroupLayout layout = new GroupLayout(this.getContentPane());
         this.getContentPane().setLayout(layout);
         //创建GroupLayout的水平连续组,,越先加入的ParallelGroup,优先级级别越高。
         GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
         hGroup.addGap(5);//添加间隔
         hGroup.addGroup(layout.createParallelGroup().addComponent(label2)
                 .addComponent(label3)
                 );
         hGroup.addGap(5);
         hGroup.addGroup(layout.createParallelGroup().addComponent(label1)
                 .addComponent(psf).addComponent(rb1).addComponent(rb2)
                 .addComponent(tf).addComponent(bt1));
         hGroup.addGap(5);
        layout.setHorizontalGroup(hGroup);
         //创建GroupLayout的垂直连续组,,越先加入的ParallelGroup,优先级级别越高。
         GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
         vGroup.addGap(10);
         vGroup.addGroup(layout.createParallelGroup().addComponent(label1));
         vGroup.addGap(10);
         vGroup.addGroup(layout.createParallelGroup().addComponent(label2)
                 .addComponent(tf));
         vGroup.addGap(5);
         vGroup.addGroup(layout.createParallelGroup().addComponent(label3)
                 .addComponent(psf));
         vGroup.addGroup(layout.createParallelGroup().addComponent(rb1));

         vGroup.addGroup(layout.createParallelGroup().addComponent(rb2));
         vGroup.addGroup(layout.createParallelGroup(Alignment.TRAILING)
                 .addComponent(bt1));
         vGroup.addGap(10);
         //设置垂直组
         layout.setVerticalGroup(vGroup);
     }
 }

截图:

时间: 2024-08-01 18:37:53

学习 Java 布局 groupLayout的相关文章

java 学习 —— AWT布局组件

自己学习java中AWT开发窗体程序中的几种窗口组件,做一下笔记 FlowLayout: import java.awt.*; public class Wintwo2 extends Frame{ //定义一个文本框. TextArea a=new TextArea("请准确填写信息"); //定义三个按钮组件. Button b1=new Button("提交"); Button b2=new Button("取消"); Button b3=

安卓学习-界面-布局-LinearLayout

1.常用的xml属性 XML属性 相关方法 说明 android:baselineAligned setBaselineAligned 看不懂什么意思,这个是网上的解释 设置为False将阻止该布局管理器于他的子元素基线对其  android:divider setDividerDrawable(Drawable divider) LinearLayout好像没效果 设置垂直布局时2个按钮之间的分隔线 android:gravity setGravity 组件内部的对齐方式,有如下几种 top

Java布局管理器组件

Java布局管理器组件 所谓布局管理器,就是为容器内的组件提供若干布局策略,每个容器都拥有某种默认布局管理器,用于负责其内部组件的排列.目前开发中,常用的布局管理器有BorderLayout.FlowLayout.GridLayout.GridBagLayout.CardLayout.BoxLayout.SpringLayout.GroupLayout等: 布局管理器种类 BorderLayout FlowLayout GridLayout GridBagLayout CardLayout Bo

学习java自学好还是去培训学校学习好?付零基础系统学习路线

培训怎么说呢,给你铺垫个底子,前期能避免一些坑,如果是跨专业或者完全0基础自学的话,在没有天赋的情况下,的确得踩不少坑,记住前期踩坑可不算成长,有时候各种撞墙,而且撞了属于白撞.可能你自学的东西与现实工作偏了很远.其次没有强烈的兴趣爱好在你脱离行业外的时候自学很难坚持下去,可能学着学着就lol一把了,这和你已经处于这个行业内,有强烈危机感得提升自己,后者区别还是很大的. 如果培训不坑的话,有人指引或者给予正确的方向,加上沉淀一些基础能力,那么往后你在自学起来,或者工作成长起来,能力将会大幅度提升

深入学习 Java 序列化

深入学习 Java 序列化 来源  http://www.importnew.com/24490.html 原文 http://beautyboss.farbox.com/post/study/shen-ru-xue-xi-javaxu-lie-hua 前言 对于Java的序列化,一直只知道只需要实现Serializbale这个接口就可以了,具体内部实现一直不是很了解,正好这次在重复造RPC的轮子的时候涉及到序列化问题,就抽时间看了下 Java序列化的底层实现,这篇文章算是这次的学习小结吧. 第

学习java不知道怎么入手?分享一套我自己学习的路线

学习java不知道怎么入手?分享一套我自己学习的路线首先最基础的,便是安装java环境变量,和各种java工具,JDK环境安装配置.环境变量配置,只有先安装了这些工具,才可以开始敲代码之路.学java是要多动手才能学得好的,不能只看理论知识.一.从Java SE部分开始1.java基础:基础语法:面向对象(重点):集合框架(重点):常见类库API:2.java界面编程:AWT:事件机制:Swing:3.java高级知识:Annotation:IO和NIO.AIO:多线程.线程池:阻塞.非阻塞.异

零基础的人该怎么学习JAVA

对于JAVA有所兴趣但又是零基础的人,该如何学习JAVA呢?对于想要学习开发技术的学子来说找到一个合适自己的培训机构是非常难的事情,在选择的过程中总是 因为这样或那样的问题让你犹豫不决,阻碍你前进的步伐,今天就让小编为您推荐培训机构新起之秀--乐橙谷Java培训机构,助力你成就好未来. 选择java培训就到乐橙谷 北京有什么好的Java培训机构?来乐橙谷北京学Java,零基础走起,乐橙谷Java基础班授课老师经验非常丰富,课程内容安排合理,适合于有一点点Java基础甚至一点都不会Java的同学学

学习java之前

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 学习java之前 2.1认识JDK 工具包: 编译和运行其使用的是JDK里面的编译和运行,首先得下载JDK; 1.JDK的安装: JDK的官网:(http://www.oracle.com) 找到处按以下步骤: 2.安装JDK : 先双击一下jdk-8u144-windows-x64.exe然后进入安装: 然后在你写的路径下生成了文件 就是JDK的目录的位置

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent