繁体   English   中英

使用GridBagLayout在JPanel中定位JLabel

[英]Position JLabel in JPanel with GridBagLayout

这个想法是在JFrameJPanel内创建一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM