GridLayout 的未定义行为

Undefined behaviour of GridLayout

我在 Java 中创建了一个 GridLayout(3,2) 并插入了 6 个 JLabel 组件。它们应该按照代码编写的顺序插入,但它们是按降序排列的。为什么?

import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Summary_Graph_JPanel1 extends JPanel {
    public Summary_Graph_JPanel1() {
        GridLayout g=new GridLayout(3,2);
        setLayout(g);
        add(new JLabel("1"),JLabel.CENTER);
        add(new JLabel("2"),JLabel.CENTER);
        add(new JLabel("3"),JLabel.CENTER);
        add(new JLabel("4"),JLabel.CENTER);
        add(new JLabel("5"),JLabel.CENTER);
        add(new JLabel("6"),JLabel.CENTER);
    }
}

这是它的样子:

JLabel.CENTER 的使用是在错误的地方。它应该在 JLabel 构造函数中而不是交给 add(JLabel, constraint) 方法。这不是布局的适当约束,而是标签的约束。

import java.awt.GridLayout;
import javax.swing.*;

public class Summary_Graph_JPanel1 extends JPanel {
    public Summary_Graph_JPanel1() {
        GridLayout g=new GridLayout(3,2);
        setLayout(g);
        add(new JLabel("1",JLabel.CENTER));
        add(new JLabel("2",JLabel.CENTER));
        add(new JLabel("3",JLabel.CENTER));
        add(new JLabel("4",JLabel.CENTER));
        add(new JLabel("5",JLabel.CENTER));
        add(new JLabel("6",JLabel.CENTER));
    }

    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, new Summary_Graph_JPanel1());
    }
}