我对布局非常满意,对于我的应用程序,我想在面板的左下角放置一个带有填充的面板,但是我不确定要使用哪种布局。

我尝试将BorderLayout与水平对齐方式结合使用,以将面板放置在角落,但未产生预期的结果。我的代码如下:

final JLabel label = new JLabel();
label.setBorder(new EmptyBorder(20, 20, 20, 20));
label.setHorizontalAlignment(JLabel.LEFT);
label.setPreferredSize(new Dimension(100,100));
label.setBackground(Color.WHITE);
label.setOpaque(true);
add(label, BorderLayout.SOUTH);


(外部类扩展了JFrame)

下图详细说明了我想要的东西以及我拥有的东西。
java - 将JLabel定位在角落-LMLPHP

有什么技巧可以实现这种布局?看起来很简单,但是我还是新手

最佳答案

您可以使用SpringLayout

这很棘手,但是会成功的。

SpringLayout springLayout = new SpringLayout();
Container cont = getContentPane();
cont.setLayout(springLayout);

JLabel label = new JLabel("New label");
springLayout.putConstraint(SpringLayout.WEST, label, 20, SpringLayout.WEST, cont);
springLayout.putConstraint(SpringLayout.SOUTH, label, -10, SpringLayout.SOUTH, cont);
cont.add(lblNewLabel);


Spring Layout允许您设置组件侧面与框架之间的距离,并最终以动态方式设置其位置(调整大小后该位置将相对于框架保留)

这是输出:

java - 将JLabel定位在角落-LMLPHP

10-07 12:57