零基礎學Java
-
常用佈局管理器簡介
在Swing中,每個元件在容器中都有一個具體的位置和大小,而在容器中擺放各種元件時很難判斷其具體位置和大小。使用佈局管理器比我們直接在容器中控制Swing元件的位置和大小方便得多,可以更加有效地處理整個窗體的佈局。Swing提供的常用的佈局管理器有 FlowLayout流佈局管理器 和 BorderLayout邊界佈局管理器 還有 GridLayout網格佈局管理器(這些佈局管理器位於 ava.awt 包)。
-
FlowLayout流佈局管理器
流佈局管理器(FlowLayout)是最基本的佈局管理器,在容器中的佈局像“流水”一樣從左到右擺放元件。
FlowLayout類中常用的構造方法
-
public FlowLayout()
-
public FlowLayout(alignment)
-
public FlowLayout(alignment , hgap , vgap)
(PS:alignment引數為每一行具體擺放位置。hgap引數為水平間距。vgap引數為垂直間距。)
-
例項
import javax.swing.*;
import java.awt.*;
public class Demo2 extends JFrame {
public Demo2(){
setBounds(100,100,300,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
/**
* LEFT :左對齊
* RIGHT :右對齊
*/
c.setLayout(new FlowLayout(FlowLayout.RIGHT,20,20));//給容器設定流佈局 為右對齊、水平間距20、垂直間距20
for (int i = 0 ;i < 10 ;i++){
c.add(new JButton("按鈕" + i));//迴圈新增按鈕元件
}
setVisible(true);
}
public static void main(String[] args) {
new Demo2();
}
}
輸出結果:
-
BorderLayout邊界佈局管理器
建立完窗體後,在預設不指定窗體佈局的情況下,Swing元件的佈局模式是邊界(BorderLayout)
佈局,邊界佈局管理器可以將容器劃分為東、南、西、北、中 5個區域。在**呼叫 **Container類 的
add0方法 向容器中新增元件時,可以設定此元件在邊界佈局管理器中的區域,區域的控制可以由
BorderLayout類中 的成員變數來決定。
add()方法新增BorderLayout元件
語法:
add(comp , constraints); //comp:要新增的元件; //constraints:元件的佈局約束物件(BorderLayout類中的成員變數);
例項
import javax.swing.*;
import java.awt.*;
public class Demo3 extends JFrame {
public Demo3(){
setBounds(100,100,350,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new BorderLayout());//設定為邊界佈局
JButton b1 = new JButton("中"),
b2 = new JButton("東"),
b3 = new JButton("西"),
b4 = new JButton("南"),
b5 = new JButton("北");
c.add(b1,BorderLayout.CENTER);//新增按鈕到 中部
c.add(b2,BorderLayout.EAST);//新增按鈕到 東部
c.add(b3,BorderLayout.WEST);//新增按鈕到 西部
c.add(b4,BorderLayout.SOUTH);//新增按鈕到 南部
c.add(b5,BorderLayout.NORTH);//新增按鈕到 北部
c.add(new JButton("覆蓋"),BorderLayout.EAST);//新元件覆蓋舊元件
setVisible(true);
}
public static void main(String[] args) {
new Demo3();
}
}
輸出結果:
-
GridLayout網格佈局管理器
網格佈局管理器(GridLayout)是將容器劃分為網格。元件可以按行和列進行排列。在網格佈局管理器中,每一個元件的大小都相同,並且網格的個數由網格的行數和列數決定。元件從網格的左上角開始,按照從左到右、從上到下的順序加入到網格中,而且每一個元件都會填滿整個網格,改變窗體的大小,元件的太小也會隨之改變。
GridLayout網格佈局管理器常用的構造方法
-
public GridLayout(rows , columns)
-
public GridLayout(rows , columns , horizGap , vertGap)
(PS:rows表示行;columns表示列; horizGap表示水平間距; vertGap表示垂直間距;)
例項
import javax.swing.*;
import java.awt.*;
public class Demo4 extends JFrame {
public Demo4(){
setBounds(100,100,300,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new GridLayout(7,3,5,5));//設定為網格佈局(GridLayout)7行,3列,水平間距5畫素,垂直間距5畫素
for (int i=0;i<20;i++){
c.add(new JButton("按鈕"+i));
}
setVisible(true);
}
public static void main(String[] args) {
new Demo4();
}
}