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);

 }

}

你可能感兴趣的:(jdk,swing,layout,Netbeans,import,button)