Java GUI - 定位

时间:2013-11-16 16:17:12

标签: java swing user-interface layout-manager gridbaglayout

我试图将两个按钮放在左上方。他们总是处于中心位置。

我试过这个:

jp = new JPanel();
jp.setLayout(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();

//c.anchor = GridBagConstraints.BASELINE_TRAILING;
c.anchor = GridBagConstraints.WEST;

c.gridx = 0;
c.gridy = 0;
jp.add(test, c);
c.gridy++;
jp.add(atest, c);
add(jp);

但它仍在中心,而不在左侧(http://i.imgur.com/MYF8dqr.png)。

enter image description here

这是我拍的照片。红色是我希望按钮的样子。


更新:

 ArrayList<String> atest = new ArrayList<String>();
    JLabel[ ] asd = new JLabel[100];

    int temp = 0;



GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.weightx = 1.0;
c.weighty = 1.0;
c.gridx = 0;
c.gridy = 0;
atest.add("Hello");
atest.add("haelp");
atest.add("yummy");
atest.add("whats wrong");

for(String server : servers)
{
    asd[temp] = new JLabel();
    asd[temp].setText(server);
    jp.add(asd[temp], c);
    c.weighty++;
    c.gridy++;
    temp++;

}

我试图从数组中读取字符串并将其作为标签一个接一个地添加到左侧。 效果不好,结果如下: http://prntscr.com/26a9rb 如果gridbaglayout是不好的方式,我应该选择哪种方式?

4 个答案:

答案 0 :(得分:1)

阅读How to Use GridBagLayout上Swing教程中的部分,了解约束的工作原理。 weightx, weighty部分可以解决您的问题。

答案 1 :(得分:0)

如果您使用的是Eclipse,则可以使用名为WindowBuilder的插件来构建框架:

http://www.eclipse.org/windowbuilder/

您必须在WindowBuilder中将弹簧布局应用于窗口,以便在工具栏中拖放按钮,就像在VisualStudio中的.NET设计器中一样。

答案 2 :(得分:0)

解决您的问题:

  1. weightx的{​​{1}}和weighty设置为GridBagConstraint以外的其他值,如@camick所述。

  2. 您应该将0设置为FIRST_LINE_STARTWEST锚点会将组件放在其显示区域的左侧,但组件将垂直居中。对于组件的水平,从左到右的方向,它相当于anchor

  3. 修改

    尝试查看LINE_START。切割器使用BoxLayout和对齐设置可以达到您的预期效果。我已经为你写了一份SSCCE。但是,阅读size behavior with BoxLayout将有助于您更好地理解该示例。

    enter image description here

    preferredSize

答案 3 :(得分:0)

你需要像这样设置jp:jp.setLayout(null);