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(); //初始化對象時調用構造方法 } }
實例運行結果如下