所以以前我创建了一个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,但这会引发有关horizontalAlignment的IllegalArgumentException。我也看了这个,但一无所获。
有人知道在JPanel中正确格式化JLabel的方法吗?
谢谢!
答案 0 :(得分:2)
JPanel
默认使用FlowLayout
。您需要将布局设置为BorderLayout
以使用其约束
JPanel panel = new JPanel(new BorderLayout());
答案 1 :(得分:0)
您还可以使用以下方法设置布局:
panel.setLayout(new BorderLayout());
如果您不确定需要哪种方法,只需简单地输入变量和一个点,等待直到获得建议,您可以点击一次方法获取api信息,这可以帮助您通过解决这些问题很多。 或者您通过浏览器查看api:click!