Разница между setSize() и setPreferredSize() в Java
Разница между 
setSize() и
setPreferredSize() немного сложен. Иногда мы используем
setSize() а иногда 
setPreferredSize(). Иногда один удовлетворяет наши потребности, а другой нет, так что... В чем основное различие между этими двумя методами? Какой из них следует использовать для JFrame и JPanel?
Ответ: если у вашего компонента нет родителя, используйте
setSize() который изменяет размер компонента, в противном случае используйте
setPreferredSize() и оба метода
setMinimumSize() и
setMaximumSize().
setPreferredSize() выбирает идеальный размер для компонента, layoutmanager попытается организовать правильное пространство для вашего компонента.
setSize() ничего не делает, если родительский компонент использует диспетчер макетов, место, где
setSize() оказывает эффект в компонентах верхнего уровня, таких как JFrame и JWindow. Звонить нужно:
setSize() Если у вас есть компоненты внутри родителя без менеджера макетов.
So,
setPreferredSize() Вы должны поступить правильно, если у вас есть менеджер макетов, потому что большинство из них работают в восстановление оптимального, минимального и максимального размера их компонентов. Использование
setSize() и setLocation, чтобы расположить эти компоненты в соответствии с параметрами выбранного макета.
Example:
BorderLayout попытается установить границы северного региона равными размеру, указанному в
setPreferredSize() своего северного региона. В конечном итоге он может быть больше, в зависимости от размера JFrame и размера размер других компонентов в соответствии с layout.
В заключение:
- setPreferredSize() вычисляет оптимальное расположение и размер компонента, если у вас есть layout.
- Если у вас нет макета, то setSize() Используется .