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);
   }
}

輸出

更新於: 2020年2月7日

6K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告