一尘不染

Java:组件中的setPreferredSize()和setSize()方法之间的区别

java

我阅读了Java文档,但无法弄清楚这两种方法之间的主要区别是什么。有时我用了setSize(),有时是setPreferredSize(),有时是一个做我想做的,有时是另一个。

那么,两者的主要区别是什么?我应该使用哪一个JFramesJPanels


阅读 564

收藏
2020-03-03

共1个答案

一尘不染

简短的答案是:很复杂。

稍长一点的答案是:setSize()如果组件的父级没有布局管理器,setPreferredSize()以及与之相关的组件setMinimumSizesetMaximumSize如果有),则使用。

setSize()如果组件的父级使用布局管理器,则可能什么都不做;通常会对其产生影响的位置将位于顶级组件(JFramesJWindows)及其内部的东西上scrolled panessetSize()如果你的组件内部没有布局管理器,则还必须调用。

通常,setPreferredSize()如果你有布局管理器,则应该做“正确的事情”;大多数布局管理器的工作方式是获取其组件的首选(以及最小和最大)大小,然后根据布局规则使用setSize()setLocation()放置这些组件。因此(作为示例),a BorderLayout将尝试使其“北部”区域的边界等于preferred size其北部部分的边界-它们最终可能大于或小于该范围,具体取决于jframe的大小,其他组件的大小在布局中,依此类推。

2020-03-03