Разница между 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() Используется .