【问题标题】:How do I left align components in GridBagLayout?如何在 GridBagLayout 中左对齐组件?
【发布时间】:2012-07-09 12:30:12
【问题描述】:

上图中的每一行都是自定义组件,使用 gridbaglayout 来放置组件。 我试图避免按钮“Abc”之前的那个空间,我希望它完全推到左侧。如何使用 gridbaglayout 约束来实现这一点?

编辑添加源代码。

        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = GridBagConstraints.NONE;
        gridBagConstraints.insets =  new Insets(11,0,0,0);
        add(abcButton,gridBagConstraints);
            gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = GridBagConstraints.NONE;
        gridBagConstraints.insets = new Insets(20, 10, 0, 0);
        add(comp1,gridBagConstraints);
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = GridBagConstraints.NONE;
        gridBagConstraints.insets = new Insets(20, 35, 0, 0);
        add(comp2, gridBagConstraints);
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.ipadx = 120;
        gridBagConstraints.ipady = 3;
        gridBagConstraints.fill = GridBagConstraints.NONE;
        gridBagConstraints.insets = new Insets(11,20, 0, 0);
        add(txtField1, gridBagConstraints);
    btnTxtField1.setMargin(new Insets(2, 1, 2, 1));
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.ipadx = 0;
        gridBagConstraints.fill = GridBagConstraints.NONE;
        gridBagConstraints.insets = new Insets(11, 0, 0, 0);
        add(btnTxtField1, gridBagConstraints);
    gridBagConstraints = new GridBagConstraints();
    gridBagConstraints.gridx = 5;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.ipadx = 120;
    gridBagConstraints.ipady = 3;
    gridBagConstraints.fill = GridBagConstraints.NONE;
    gridBagConstraints.insets = new Insets(11, 0, 0, 0);
    add(txtField2, gridBagConstraints);
    gridBagConstraints = new GridBagConstraints();
    gridBagConstraints.gridx = 6;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.ipadx = 0;
    gridBagConstraints.fill = GridBagConstraints.NONE;
    gridBagConstraints.insets = new Insets(11, 0, 0, 0);
    add(btnTxtField2, gridBagConstraints);

添加权重后:

【问题讨论】:

    标签: java swing gridbaglayout


    【解决方案1】:

    您必须将锚设置为 GridBagConstraints.NORTHWEST 或类似的东西......

    constraints.anchor = GridBagConstraints.WEST;
    

    【讨论】:

    • @Jay 好的。你能发布你的来源吗?有时其他约束会出现一些“奇怪”的行为......
    • 如果使用该组件的窗口不可调整大小,我认为我不需要指定任何权重?
    • 添加此按钮左对齐:gridBagConstraints.weightx=1
    • 好的。我想我有一个更新。我试过了,constraints.anchor = GridBagConstraints.WEST 和 constraints.gridx=1.0d。这很有效,abc 按钮完全移到了左边,但是,它现在在下一个框/标签之前在右边留下了一个巨大的间隙。我希望这个框/标签也向左移动。理想情况下,我希望组件之间的空间保持原样,但所有组件都应该向左推。
    • 我认为您还必须将解决方案添加到所有其他组件中。
    猜你喜欢
    • 2012-10-05
    • 2014-06-04
    • 2018-01-13
    • 2021-10-02
    • 2013-06-10
    • 2012-08-19
    • 2016-10-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多