[英]Position JLabel in JPanel with GridBagLayout
这个想法是在JFrame
的JPanel
内创建一个JLabel
。 我想将标签放置在左下角,并使用GridBagLayout
。 我已经玩过GridBagConstraints
字段,但是我所做的一切似乎都没有效果。 唯一JLayer
是更改JLayer
的填充,但有一半的时间未按计划进行。
这是代码:
class Panelz extends JFrame{
JPanel panel = new JPanel();
JLabel label = new JLabel();
public static void main(String[] args){
Panelz p = new Panelz();
p.pack();
p.setVisible(true);
p.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public Panelz(){
Dimension scr = new Dimension(500,500);
this.setPreferredSize(scr);
Container cont = this.getContentPane();
cont.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
label.setText("Potato");
//make panel
panel.setBackground(Color.red);
panel.setLayout(new GridBagLayout());
c.fill=GridBagConstraints.BOTH;
c.gridx=0;
c.gridy=0;
c.weighty=100f;
panel.add(label,c);
c.weightx=0.2f;
c.weighty=0.2f;
cont.add(panel, c);
}
}
输出始终是面板中央的标签文本。
我想将标签放置在左下角
c.fill=GridBagConstraints.BOTH;
但是您正在使用看起来像“ BOTH”的值的填充。 就像您试图使标签充满整个面板一样,而不仅仅是左下方。
panel.setBackground(Color.red);
不要设置面板的颜色。 而是设置标签的颜色。 然后,您将能够确切地看到布局管理器如何调整标签的大小。 就像是:
label.setText("Potato");
label.setOpaque(true);
label.setBackground(Color.BLUE);
同样,无需设置框架内容窗格的布局。
为了更好地了解GridBagLayout的工作原理,请阅读Swing教程中有关如何使用GridBagLayout的部分 。 本教程中的工作示例显示了如何在面板的bottom right
显示组件。 阅读完约束的工作原理后,您应该能够修改该代码以在bottom left
显示组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.