是否有一种简单的方法可以使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's spec
答案 0 :(得分:3)
据我所知,告诉GroupLayout组件不要拉伸或以其他方式未对齐的唯一方法要求相关组件在ParallelGroup内。然后将ParallelGroup的resizeable标志设置为false是一件简单的事情。
Javadoc of ParallelGroup creator with relevant flag
例如,在下面的代码中,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
答案 1 :(得分: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);
}
}