JDK 1.6 的新布局管理器 : GroupLayout

用Swing做桌面应用的时候布局管理是一件很让人头疼得事情,其实用习惯后我觉得通过swing的布局管理器反而很容易的实现一些特殊的功能,不过这里孰是孰非就不多说了,仁者见仁:)

        这篇文章介绍一下jdk1.6新增的布局管理器GroupLayout的简单使用方法。

       GroupLayout 据说是原来netbeans中可视化设计用的layout,相关文章大家可以google一下,有不少。其实GroupLayout的相关文章也不少,这里呢,只是说一下我的心得。

先写一个Demo吧,然后用注释讲解:

/**
 *
 */
package sample.grouplayout;

import java.awt.Container;
import java.awt.HeadlessException;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class GroupLayoutDemo extends JFrame {

 /**
  * 该类直接在构造方法里初始化GroupLayout,只为了方便演示
  */
 private static final long serialVersionUID = 1L;

 /**
  * @throws HeadlessException
  */
 public GroupLayoutDemo() throws HeadlessException {
  //创建GroupLayout ---- //GroupLayout 创建的时候需要给定一个Container,基本上所有的swing的轻量级组件都间接继承自Container
  Container c = getContentPane();
  GroupLayout layout = new GroupLayout(c);
  
  //初始化一些组件
  JButton b1 = new JButton("button 1");
  JButton b2 = new JButton("button 2");
  JTextField text = new JTextField("Text Field");
  

  //GroupLayout 顾名思义,就是通过Group来组织页面,打个不恰当的比喻,像是Html里的大<Table>套小<table>,而,GroupLayout也正是大Group套小Group

//对于GroupLayout来说,需要从两个方向对组件进行分组: 水平方向 和 垂直方向,某一个方向上又有两种排列方式,连续排列 和 平行排列,这样就可以将组件固定到面板的某个位置上了.


  //水平
  GroupLayout.SequentialGroup hsg = layout.createSequentialGroup(); //水平方向上 创建 连续组
  hsg.addComponent(b1); //b1
  hsg.addComponent(b2); //b2
  GroupLayout.ParallelGroup hpg = layout.createParallelGroup(GroupLayout.Alignment.CENTER); // 水平方向上 创建 平行组
  hpg.addComponent(text).addGroup(hsg); //text and hsg(连续组)
  layout.setHorizontalGroup(hpg); //设置到水平方向上
  //垂直
  GroupLayout.ParallelGroup vpg = layout.createParallelGroup(); //垂直方向上 创建 平行组
  vpg.addComponent(b1); //b1
  vpg.addComponent(b2); //b2
  GroupLayout.SequentialGroup vsg = layout.createSequentialGroup(); //垂直方向上 创建 连续组
  vsg.addComponent(text).addGroup(vpg); // text and vpg(平行组)
  layout.setVerticalGroup(vsg); //设置到垂直方向上
  
  this.setLayout(layout); //
  // other
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  pack();
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  GroupLayoutDemo demo = new GroupLayoutDemo();
  demo.setVisible(true);

 }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值