Java 中 GridLayout 和 GridBagLayout 有什麼區別?
一個 **GridLayout** 將所有元件放置在一個矩形網格中,並將其劃分為 **大小相同的矩形**,每個元件都放置在一個矩形內,而 **GridBagLayout** 是一種 **靈活的** **佈局管理器**,它可以 **垂直和水平** 對齊元件,而不需要元件具有相同的大小。每個 **GridBagLayout** 物件維護一個動態的、矩形的 **單元格網格**,每個元件佔據一個或多個單元格,稱為 **元件顯示區域**。
GridLayout
一個 **GridLayout** 將元件排列在一個矩形網格中。它將元件排列在單元格中,並且每個單元格都具有 **相同的大小**。元件放置在 **列和行** 中。**GridLayout(int rows, int columns)** 接受兩個引數,即列和行。
示例
import java.awt.*; import javax.swing.*; public class GridLayoutTest{ GridLayoutTest() { JFrame frame = new JFrame("GridLayout Test"); JButton button1, button2, button3, button4; button1 = new JButton("Button 1"); button2 = new JButton("Button 2"); button3 = new JButton("Button 3"); button4 = new JButton("Button 4"); frame.add(button1); frame.add(button2); frame.add(button3); frame.add(button4); frame.setLayout(new GridLayout(2,2)); frame.setSize(300,300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public static void main(String[] args) { new GridLayoutTest(); } }
輸出
GridBagLayout
一個 **GridBagLayout** 擴充套件了 GridLayout 的功能。**GridBagLayout** 將元件放置在網格中的每個單獨單元格中,並且還允許元件跨越 **多列或多行**。為了使用 **GridBagLayout**,我們需要建立一個 **GridBagConstraints 物件** 並填充相應的屬性。
示例
import javax.swing.*; import java.awt.*; public class GridBagLayoutTest extends JFrame { public GridBagLayoutTest() { setTitle("GridBagLayout Test"); setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 5; gbc.gridy = 0; add(new JButton("Button1"), gbc); gbc.gridx = 0; gbc.gridy = 5; add(new JButton("Button2"), gbc); gbc.gridx = 2; gbc.gridy = 4; add(new JButton("Button3"), gbc); } public static void main(String[] args) { GridBagLayoutTest gbcTest = new GridBagLayoutTest(); gbcTest.setSize(300,300); gbcTest.setVisible(true); gbcTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
輸出
廣告