如何正确"layout"一个JLabel?

How to correctly "layout" a JLabel?

所以之前我创建了一个JFrame,并成功地在它的南边添加了一个JLabel。

当我意识到将 JLabel 添加到 JPanel 并将该 JPanel 添加到 JFrame 与将 JLabel 添加到 JFrame 的工作方式不同时,我已经开始使用 GUI 处理一个更大的项目。我是使用 java 图形进行编程的新手,不太确定 JPanel 和 JFrames 之间的所有区别。出于某种原因,在运行我在下面包含的代码时,标签仅保留在面板的顶部中心。

// tests adding a JLabel to a JPanel

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;

import java.awt.BorderLayout;

public class Test extends JFrame
{
    public Test()
    {
        super("TestFrame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 500);

        // add JPanel with label to frame
        JPanel panel = new JPanel();
        JLabel label = new JLabel("Testing 123...");
        panel.add(label, BorderLayout.SOUTH);

        add(panel);

        setVisible(true);
    }

    public static void main(String[] args)
    {
        // create a new Test
        Test test = new Test();
    }
}

我一直在研究寻找答案,但由于某种原因找不到任何东西。我也曾尝试在创建 JLabel 时使用 SwingConstants,但这会引发有关 horizo​​ntalAlignment 的 IllegalArgumentException。我也查过这个,但一无所获。

有人知道在 JPanel 中正确格式化 JLabel 的方法吗?

谢谢!

JPanel 默认使用 FlowLayout。您需要将布局设置为 BorderLayout 才能使用其约束

JPanel panel = new JPanel(new BorderLayout());

您也可以使用此设置布局:

    panel.setLayout(new BorderLayout());

如果您不确定您需要哪些方法,您可以简单地输入变量和一个点,然后等到您得到建议,您可以点击一次方法并获得 api这些信息可以帮助您解决此类问题。 或者您通过浏览器查看 api:click!