GridBagLayout对齐标签

时间:2015-06-19 17:15:49

标签: java

我一直在搞乱GridBagLayout并且遇到了一些麻烦。首先,我试图让标签从左上角开始,我完成了:

    JPanel right = new JPanel(new GridBagLayout());
    right.setPreferredSize(new Dimension(333,600));

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.anchor = GridBagConstraints.NORTHWEST;

    JLabel testLabel = new JLabel();
    testLabel.setText("Test");
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weighty = 1;
    gbc.weightx = 1;
    right.add(testLabel, gbc);

现在我想直接在这个标签下添加另一个标签:

    JLabel test2Label = new JLabel();
    test2Label.setText("test2");
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.weighty = 1;
    gbc.weightx = 1;
    right.add(test2Label, gbc);

不是将它直接放在第一个下面,而是将它放在面板的中间位置。因为我认为它的重量和重量,但如果我改变这些,那么它不会将标签放在左上角。我怎样才能使它工作?对不起,如果不清楚英语不是我最好的语言,请告诉我你是否需要我澄清。 -Thanks

1 个答案:

答案 0 :(得分:0)

如果我理解正确,下面的代码应该是答案。 weightx和weighty决定如何将组件中的可用空间分配给其子组件 - 值越大,空间越大(在此处阅读更多:Weightx and Weighty in Java GridBagLayout)但如果将所有组件保留为零值,则它们都将集中。

因此,在您的情况下,最佳解决方案是将整个左侧空间分配给第二个组件。

GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.NORTHWEST;

JLabel testLabel = new JLabel();
testLabel.setText("Test");
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weighty = 0;
gbc.weightx = 0;
right.add(testLabel, gbc);

JLabel test2Label = new JLabel();
test2Label.setText("test2");
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weighty = 1;
gbc.weightx = 1;
right.add(test2Label, gbc);