2010-08-26 63 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