каково различие между DEFAULT_SIZE и PREFERRED_SIZE?

Я использую Swing GroupLayout, и я смущен значениями GroupLayout.DEFAULT_SIZE и GroupLayout.PREFERRED_SIZE. Я никогда не знаю, когда использовать каждого из них в методах как GroupLayout.addComponent(Component, int, int, int).

предположите, что у меня есть этот код:

GroupLayout l = ...;

l.setHorizontalGroup(l.createSequentialGroup()
    .addComponent(tf1)
    .addComponent(tf2));

l.setVerticalGroup(l.createParallelGroup()
    .addComponent(tf1)
    .addComponent(tf2));

существуют два JTextFields на одной строке, размеченной с GroupLayout (одна последовательная группа горизонтально и одна параллельная группа вертикально). если я изменяю размер окна теперь, оба компонента получают свободное место (50% каждый). но я хочу только, чтобы первое текстовое поле росло/уменьшало горизонтально и только второе текстовое поле для росшего/уменьшения вертикально. какие значения минуты, приставки и макс. я должен использовать для выполнения этого? Я знаю, что могу просто попробовать его и видеть, какая комбинация работает, но я хотел бы знать обоснование позади этой проблемы.

6
задан mKorbel 14 January 2012 в 00:08
поделиться

1 ответ

Некоторое руководство можно найти в Как использовать GroupLayout: Component Size and Resizability. Что касается DEFAULT_SIZE и PREFERRED_SIZE,

Их можно использовать как параметры в методе

 addComponent(Component comp, int min, int pref, int max)

Чтобы заставить компонент быть изменяемым по размеру (разрешить уменьшение и увеличение):

 group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

Это позволяет компоненту изменять размер от нулевого (минимального) до любого (Short.MAX_VALUE, поскольку максимальный размер означает "бесконечный"). Если бы мы хотели, чтобы компонент не уменьшался ниже своего минимального размера по умолчанию, мы бы использовали GroupLayout.DEFAULT_SIZE вместо 0 во втором параметре.

Чтобы сделать компонент фиксированного размера (подавить изменение размера):

 group.addComponent(component, GroupLayout.PREFERRED_SIZE,
     GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)...

Интересно, что постоянные значения отрицательны, поэтому их нельзя принять за фактические ограничения.

3
ответ дан 17 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: