Остановка растяжения компонентов GroupLayout по вертикали - PullRequest
3 голосов
/ 26 августа 2010

Есть ли простой способ, чтобы все (или большинство) компонентов в приложении 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 spec

Ответы [ 2 ]

3 голосов
/ 19 июня 2011

Насколько я знаю, единственный способ сказать компонентам GroupLayout не растягивать или иным образом не выравнивать, требует, чтобы соответствующие компоненты были внутри ParallelGroup. Тогда просто установить флаг изменяемого размера ParallelGroup на false.

Javadoc создателя ParallelGroup с соответствующим флагом

Например, в следующем коде jspCasts - это очень высокий компонент. Без новой ParallelGroup с установленным флагом false, компоненты рядом с ней будут либо растягиваться, либо не выравниваться аккуратно, как должны.

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 голос
/ 18 января 2011

Не так, как я знаю.Я обработал его с помощью служебного класса:

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);
    }
}
...