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