3

有没有一种简单的方法可以让 GroupLayout 应用程序中的所有(或大部分)组件不垂直拉伸?我知道我可以通过在添加时强制每个组件为其首选大小来做到这一点,但这会使代码更加冗长:

       .addGroup(layout.createSequentialGroup()
          .addComponent(oDevRadio)
          .addComponent(oInstRadio)
       )

变成

       .addGroup(layout.createSequentialGroup()
          .addComponent(oDevRadio,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
          .addComponent(oInstRadio,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
       )

有没有办法将其设置为默认值,只需指定我想要可拉伸的元素?

参考 - addComponent 的规范

4

2 回答 2

3

据我所知,告诉 GroupLayout 组件不要拉伸或以其他方式错位的唯一方法要求相关组件位于 ParallelGroup 内。然后将 ParallelGroup 的 resizeable 标志设置为 false 是一件简单的事情。

具有相关标志的 ParallelGroup 创建者的 Javadoc

例如,在下面的代码中 jspCasts 是一个非常高的组件。如果没有将标志设置为 false 的新 ParallelGroup,则它旁边的组件要么会拉伸,要么不会按照应有的方式整齐对齐。

vGroup.addGroup(gl.createParallelGroup(Alignment.LEADING).
    addComponent(jspCasts).
    addGroup(gl.createParallelGroup(Alignment.CENTER, false).
      // without worrying about vertical stretching or misalignment, 
      // add your components here
于 2011-06-18T23:25:35.903 回答
1

据我所知不是。我已经用一个实用程序类处理了它:

package alpha;

import java.awt.Component;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Group;

public class GroupLayoutUtil
{
    public static GroupLayout.Group addPreferred(Group g, Component c)
    {
        return g.addComponent(c, GroupLayout.PREFERRED_SIZE, 
                GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE);
    }
}
于 2011-01-18T03:08:44.270 回答