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);
}
}輸出
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP