什麼是LayoutManager?Java中有哪些型別的LayoutManager?
佈局管理器使我們能夠透過確定容器內元件的大小和位置來控制在GUI窗體中視覺元件的排列方式。
LayoutManager的型別
Java中有6種佈局管理器
- FlowLayout:它像頁面上的文字一樣排列容器中的元件。它從左到右,從上到下填充頂行。元件按照新增順序排列,即第一個元件出現在左上角。如果容器不夠寬以顯示所有元件,則會換行。可以控制組件之間的垂直和水平間距。元件可以左對齊、居中或右對齊。
- BorderLayout:它沿著容器的邊緣或中間排列所有元件,即區域的頂部、底部、右側和左側邊緣。新增到頂部或底部的元件獲得其首選高度,但其寬度將是容器的寬度;新增到左側或右側的元件獲得其首選寬度,但其高度將是容器的剩餘高度。新增到中心的元件既沒有其首選高度也沒有其首選寬度。它覆蓋容器的剩餘區域。
- GridLayout:它將所有元件排列在一個大小相等的單元格網格中,從左到右,從上到下新增它們。一個單元格只能放置一個元件,並且網格的每個區域都將具有相同的大小。調整容器大小時,所有單元格都會自動調整大小。在單元格中放置元件的順序與其新增順序相同。
- GridBagLayout:這是一個強大的佈局,它將所有元件排列在一個單元格網格中,並在調整容器大小時保持物件的縱橫比。在這個佈局中,單元格的大小可能不同。它為元件分配一致的水平和垂直間距。它允許我們為列或行中的元件指定預設對齊方式。
- BoxLayout:它可以垂直或水平排列多個元件,但不能同時進行這兩種排列。元件從左到右或從上到下排列。如果元件水平對齊,則所有元件的高度將相同,且等於最大尺寸元件的高度。如果元件垂直對齊,則所有元件的寬度將相同,且等於最大寬度元件的寬度。
- CardLayout:它排列兩個或多個具有相同大小的元件。元件像紙牌一樣排列,其中所有紙牌大小相同,並且任何時候都只有頂部的紙牌可見。新增到容器中的第一個元件將保留在牌堆的頂部。左右上下邊緣的預設間距為零,紙牌元件水平或垂直顯示。
示例
import java.awt.*;
import javax.swing.*;
public class LayoutManagerTest extends JFrame {
JPanel flowLayoutPanel1, flowLayoutPanel2, gridLayoutPanel1, gridLayoutPanel2, gridLayoutPanel3;
JButton one, two, three, four, five, six;
JLabel bottom, lbl1, lbl2, lbl3;
public LayoutManagerTest() {
setTitle("LayoutManager Test");
setLayout(new BorderLayout()); // Set BorderLayout for JFrame
flowLayoutPanel1 = new JPanel();
one = new JButton("One");
two = new JButton("Two");
three = new JButton("Three");
flowLayoutPanel1.setLayout(new FlowLayout(FlowLayout.CENTER)); // Set FlowLayout Manager
flowLayoutPanel1.add(one);
flowLayoutPanel1.add(two);
flowLayoutPanel1.add(three);
flowLayoutPanel2 = new JPanel();
bottom = new JLabel("This is South");
flowLayoutPanel2.setLayout (new FlowLayout(FlowLayout.CENTER)); // Set FlowLayout Manager
flowLayoutPanel2.add(bottom);
gridLayoutPanel1 = new JPanel();
gridLayoutPanel2 = new JPanel();
gridLayoutPanel3 = new JPanel();
lbl1 = new JLabel("One");
lbl2 = new JLabel("Two");
lbl3 = new JLabel("Three");
four = new JButton("Four");
five = new JButton("Five");
six = new JButton("Six");
gridLayoutPanel2.setLayout(new GridLayout(1, 3, 5, 5)); // Set GridLayout Manager
gridLayoutPanel2.add(lbl1);
gridLayoutPanel2.add(lbl2);
gridLayoutPanel2.add(lbl3);
gridLayoutPanel3.setLayout(new GridLayout(3, 1, 5, 5)); // Set GridLayout Manager
gridLayoutPanel3.add(four);
gridLayoutPanel3.add(five);
gridLayoutPanel3.add(six);
gridLayoutPanel1.setLayout(new GridLayout(2, 1)); // Set GridLayout Manager
gridLayoutPanel1.add(gridLayoutPanel2);
gridLayoutPanel1.add(gridLayoutPanel3);
add(flowLayoutPanel1, BorderLayout.NORTH);
add(flowLayoutPanel2, BorderLayout.SOUTH);
add(gridLayoutPanel1, BorderLayout.CENTER);
setSize(400, 325);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]) {
new LayoutManagerTest();
}
}
輸出
從我們的Java 教程開始學習Java。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP