好的,我阅读了Java文档,只是无法弄清楚这两种方法之间的主要区别是什么。有时我用setSize()
,有时是setPreferredSize()
,有时一个人做我想要的,有时是另一个。
那么,两者的主要区别是什么?我应该使用哪一个JFrames
和JPanels
?
谢谢
简短的答案是:很复杂。
稍长一点的答案是:setSize()
如果组件的父级没有布局管理器,setPreferredSize()
及其相关项setMinimumSize
(setMaximumSize
如果有),则使用。
setSize()
如果组件的父级使用布局管理器,则可能什么都不做;通常会对其产生影响的位置将位于顶层组件(JFrames
和JWindows
)及其内部的东西上scrolled panes
。setSize()
如果您的组件内部没有布局管理器,则还必须调用。
通常,setPreferredSize()
如果您有布局管理器,则应该做“正确的事”。大多数布局管理器的工作方式是获取其组件的首选(以及最小和最大)大小,然后根据布局规则使用setSize()
和setLocation()
放置这些组件。因此(作为示例),a BorderLayout
将尝试使其“北部”区域的边界等于preferred size
其北部部分的边界-它们最终可能大于或小于该范围,具体取决于jframe
的大小,其他部分的大小在布局中,依此类推。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句