我对布局很不错...对于我的应用程序我想在左下角放置一个面板,使用填充,但我不确定要使用哪种布局。
我尝试使用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)
实现此布局的任何提示?这似乎很简单,但同样,我是布局
的新手答案 0 :(得分:2)
我推荐两种方式:
您可以使用GridBagLayout
来达到您想要的效果。查看教程here。
它足够灵活,可以满足您的需求和任何其他附加组件。
使用具有不同布局的嵌套面板。例如,topPanel和bottomPanel。默认情况下(FlowLayout将用于您的bottomPanel),它将JLabel定位在左下角。
答案 1 :(得分:1)
您可以使用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允许您设置组件两侧和框架之间的距离,并最终以动态方式设置它的位置(调整大小时该位置将保持相对于框架)
这是输出:
答案 2 :(得分:0)
您可以使用null Layout来自定义JFrame。与
yourFrame.setLayout(null)
你可以
setLocation(x,y);
setsize(width,height);