Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khác biệt giữa GridLayout và GridBagLayout trong Java

GridLayout đặt tất cả thành phần trong lưới chữ nhật, chia thành các hình chữ nhật bằng nhau, mỗi thành phần nằm trong một ô. GridBagLayout là layout manager linh hoạt căn chỉnh thành phần dọc và ngang mà không yêu cầu các thành phần cùng kích thước. Mỗi đối tượng GridBagLayout duy trì một lưới ô động, mỗi thành phần chiếm một hoặc nhiều ô gọi là Component display area.

GridLayout

Sắp xếp thành phần trong lưới chữ nhật. Mỗi ô có cùng kích thước. Thành phần đặt theo cột và hàng. GridLayout(int rows, int columns) nhận hai tham số: hàng và cột.

Ví dụ GridLayout

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

Mở rộng khả năng của GridLayout. Đặt thành phần trong từng ô riêng lẻ và cho phép thành phần trải qua nhiều cột hoặc hàng. Để dùng GridBagLayout, tạo đối tượng GridBagConstraints và điền các thuộc tính phù hợp.

Ví dụ GridBagLayout

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

Bảng so sánh tóm tắt

Đặc điểmGridLayoutGridBagLayout
Kích thước ôBằng nhau (equal)Khác nhau (flexible)
Trải cột/hàng (span)KhôngCó (gridwidth, gridheight)
Căn chỉnhTự động căn giữa ôLinh hoạt (anchor, fill, weightx, weighty)
Độ phức tạpĐơn giảnPhức tạp (cần GridBagConstraints)
Phù hợpForm đơn giản, ma trận nút bấmForm phức tạp, layout tùy biến cao

GridBagConstraints quan trọng: gridx, gridy, gridwidth, gridheight, fill, anchor, weightx, weighty, insets, ipadx, ipady.