2010-08-26 91 views
3

是否有一种简单的方法可以让GroupLayout应用程序中的所有(或大部分)组件不垂直拉伸?我知道我可以通过强制每个组件它的首选大小,当我添加它做到这一点,但是这使得代码,以便更加详细:停止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

回答

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); 
    } 
} 
+0

对于有用的工具类+1。 – Arvanem 2011-06-18 23:34:32

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