如何正确"布局"一个JLabel?

时间:2015-01-02 22:00:31

标签: java jpanel jlabel border-layout

所以以前我创建了一个JFrame,并成功地在其南部边界添加了一个JLabel。

当我意识到将JLabel添加到JPanel并将JPanel添加到JFrame时,我已经开始使用GUI开发一个更大的项目了,这与将JLabel简单地添加到JFrame的方式不同。我是Java图形编程的新手,我不太确定JPanels和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的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您还可以使用以下方法设置布局:

    panel.setLayout(new BorderLayout());

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