GroupLayout对齐

时间:2018-02-23 13:01:40

标签: java alignment grouplayout

为什么......

Group horizontalGroup = groupLayout.createSequentialGroup()
    .addGroup(groupLayout.createParallelGroup()
            .addComponent(aTextArea)
            .addComponent(aButton,GroupLayout.Alignment.CENTER));

Group verticalGroup = groupLayout.createSequentialGroup()
    .addComponent(aTextArea)
    .addComponent(aButton);

...给这个(按预期)

+--------------------------------------------------------------+
|+-------------------------------------------------------+     |
||                       aTextArea                       |     |
||                                                       |     |
|+-------------------------------------------------------+     |
|                        [aButton]                             |
|                                                              |
+--------------------------------------------------------------+

但......

Group horizontalGroup = groupLayout.createSequentialGroup()
    .addGroup(groupLayout.createParallelGroup()
            .addComponent(aTextArea)
            .addGroup(groupLayout.createParallelGroup
                                         (GroupLayout.Alignment.CENTER)
                    .addComponent(aButton)));

Group verticalGroup = groupLayout.createSequentialGroup()
    .addComponent(aTextArea)
    .addComponent(aButton);

给出了这个?

+--------------------------------------------------------------+
|+-------------------------------------------------------+     |
||                       aTextArea                       |     |
||                                                       |     |
|+-------------------------------------------------------+     |
|[aButton]                                                     |
|                                                              |
+--------------------------------------------------------------+

为什么将aButton包装在并行组中导致它忽略对齐?将对齐添加到aButton本身也没有效果。

我想做这样的事情,以便在aTextArea下面混合使用前导,尾随和中心对齐组。在我看来,GroupLayout相当有限,如果它无法应对这一点。

1 个答案:

答案 0 :(得分:0)

这......

.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.CENTER)
    ...

指定组内的组件与其他组件集中对齐。

要将组(组内的所有元素)与父组对齐,请将对齐指定为addGroup()方法的参数,而不是createParallelGroup():

.addGroup(GroupLayout.Alignment.CENTER, groupLayout.createParallelGroup()
    ...

我没有找到此文档,但似乎 addGroup(GroupLayout.Group组)表单(无对齐规范)应用了LEADING对齐。

通过这种方式,SequentialGroups也可以与父组对齐。