Java 中 setSize() 和 setPreferredSize() 之间的区别
两者的区别 setSize() 和 setPreferredSize()有点复杂。有时我们使用setSize() 有时 setPreferredSize()。有时一个满足我们的需求,另一个则不能,那又是什么......这两种方法的主要区别是什么?我们应该对 JFrame 和 JPanel 使用哪一个?答案是,如果你的组件没有父组件,请使用 setSize() 更改组件的大小,否则使用 setPreferredSize() 和两种方法 setMinimumSize() 和 setMaximumSize()。setPreferredSize() 为组件选择理想的大小,布局管理器将尝试为您的组件安排正确的空间。
setSize() 如果父组件使用布局管理器,则不执行任何操作,该位置setSize() 有效果 将位于 JFrame 和 JWindow 等顶级组件中。您需要致电:setSize() 如果父级内部有没有布局管理器的组件。
所以, setPreferredSize() 如果你有一个布局管理器,你必须做正确的事情,因为他们中的大多数都在 恢复其组件的最佳尺寸、最小尺寸和最大尺寸。用setSize() 和 setLocation 根据所选布局的参数来定位这些组件。
示例:
A BorderLayout 将尝试将北部区域的边界设置为等于 中指定的维度setPreferredSize() 其北部地区。它最终可能会大于此,具体取决于 JFrame 的大小和根据 layout.
作为结论:
- setPreferredSize() 计算组件的最佳位置和尺寸(如果您有布局)。
- 如果您没有布局,那就是setSize() 那是用的.