package com.swing;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
/**
* 1:流(FlowLayout)布局管理器是布局管理器中最基本的布局管理器,流布局管理器在整個容器中
* 的布局正如其名,像流一樣從左到右擺放組件,直到占據了這一行的所有空間,然後再向下移動一行。
* 默認情況下,組件在每一行上都是居中排列的,但是通過設置也可以更改組件在每一行上的排列位置
*
* 2:FlowLayout類中具有三種構造方法
* alignment參數使用流布局管理器後組件在每一行的具體擺放位置
* horizGap參數以像素為單位指定組件之間的水平分割
* vertGap參數以像素為單位指定組件之間的垂直分割
*
* @author biexiansheng
*
*/
public class FlowLayoutPosition extends JFrame{
public FlowLayoutPosition(){
setTitle("本窗體使用流布局管理器");//設置窗體標題
Container container=getContentPane();//初始化容器
//設置窗體使用流布局管理器,使組件右對齊,並且設置組件之間的水平間隔,和垂直間隔
setLayout(new FlowLayout(1,10,10));//new一個構造方法
//FlowLayout第一個參數設置為0每一行組件將按照左對齊排列
//FlowLayout第一個參數設置為1每一行組件將按照中間對齊排列
//FlowLayout第一個參數設置為2每一行組件將按照右對齊排列
for(int i=0;i<10;i++){//在容器中添加10個按鈕
container.add(new JButton("button"+i));
//new一個按鈕構造方法,這種使用技巧勤加練習
}
setSize(300,200);//設置窗體的大小
setVisible(true);//設置窗體可視化
//設置窗體的關閉方式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
FlowLayoutPosition fl=new FlowLayoutPosition();
//初始化對象調用構造方法
}
}
實例運行結果如下


package com.swing;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
/**
* 1:在默認不指定窗體布局的情況下,Swing組件的布局模式是邊界(BorderLayout)
* 布局管理器
*
* 2:邊界布局管理器還可以將容器劃分為東西南北中5個區域,可以將組件加入到這5個區域中
* 邊界布局管理器可將標簽放置在窗體中間,並且整個組件占據了窗體的所有的空間
*
* 3:容器調用Container類的add()方法添加組件時可以設置此組件在邊界布局管理器中的區域
* 區域的控制可以由BorderLayout類中的成員變量來決定
* @author biexiansheng
*
*/
public class BorderLayoutPosition extends JFrame{
//定義組件擺放位置的數組
String[] border={BorderLayout.CENTER,BorderLayout.NORTH
,BorderLayout.SOUTH,BorderLayout.WEST,BorderLayout.EAST};
/*1:將布局以及組件名稱分別放置在數組中,然後設置容器使用邊界布局管理器
* 最後在循環中將按鈕添加到容器中,並設置組件布局
*2:add()方法提供了在容器中添加組件的功能,並同時設置組件的擺放位置
* */
//定義按鈕組件上面的文字ESWN 東南西北 上北下南左西右東
String[] buttonName={"center button","north 北 button",
"south 南 button","west 西 button","east 東 button",};
public BorderLayoutPosition(){//定義一個構造方法
setTitle("這個窗體使用邊界布局管理器");//
Container container=getContentPane();//定義一個容器
setLayout(new BorderLayout());//設置容器為邊界布局管理器
//setLayout()語法為設置布局管理器
//在容器中添加按鈕,並設置按鈕布局
for(int i=0;i<border.length;i++){
container.add(border[i],new JButton(buttonName[i]));
}
//設置窗體的外部屬性
setSize(350,200);//設置窗體的大小
setVisible(true);//設置窗體可見
//設置窗體的關閉方式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
BorderLayoutPosition bl=new BorderLayoutPosition();
//實例化對象的時候就調用了構造方法
}
}
實例運行結果如下

package com.swing;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
/**
* 1:網格(GridLayout)布局管理器將容器劃分為網格,所以組件可以按行和列進行排列
* 在網格布局管理器中,每一個組件的大小都相同,並且網格中空格的個數由網格的行數和列數決定
* 如一個兩行兩列的網格能產生4個大小相等的網格,
*
* 2:組件從網格的左上角開始,按照從左到右,從上到下的順序加入到網格中,而且每一個組件都會填滿
* 整個網格,改變窗體的大小,組件的大小也會隨之改變
*
* 3:網格布局管理器主要有2個構造方法
* rows參數代表網格的行數
* columns參數代表網格的列數,這2個參數只有一個可以為0代表一行或者一列可以排列任意多個組件
* 參數horizGap指定網格之間的間距,指定網格之間的水平間距
* 參數vertGap指定網格之間的垂直間距
* @author biexiansheng
*
*/
public class GridLayoutPosition extends JFrame{
public GridLayoutPosition(){//定義一個構造方法
Container container=getContentPane();//定義一個容器
//設置窗體使用網格布局管理器,設置了7行3列的網格
setLayout(new GridLayout(7,3,5,5));//先開始設置布局管理器
for(int i=0;i<20;i++){
container.add(new JButton("button"+i));
}
//設置容器的外部結構
setTitle("這是一個網格布局管理器的窗體");
setSize(300,300);//設置窗體的大小
setVisible(true);//設置窗體的可見
//設置窗體的關閉方式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
GridLayoutPosition gl=new GridLayoutPosition();
//初始化對象時調用構造方法
}
}
實例運行結果如下
