setSize()
和之间的主要区别是什么setPreferredSize()
。有时我用了setSize()
,有时是setPreferredSize()
,有时是一个做我想做的,有时是另一个。
JFrame
s和JPanel
s 应该使用什么电话?
setSize()
和之间的主要区别是什么setPreferredSize()
。有时我用了setSize()
,有时是setPreferredSize()
,有时是一个做我想做的,有时是另一个。
JFrame
s和JPanel
s 应该使用什么电话?
Answers:
用法取决于组件的父级是否具有布局管理器。
setSize()
-在父级布局管理器不存在时使用;setPreferredSize()
(及其相关的setMinimumSize
和setMaximumSize
)-在存在父级布局管理器时使用。setSize()
如果组件的父级使用布局管理器,则该方法可能不会执行任何操作。通常会在顶层组件(JFrame
s和JWindow
s)以及滚动窗格内部的内容上产生影响的地方。setSize()
如果您的组件内部没有布局管理器,则还必须调用。
通常,setPreferredSize()
如果存在布局管理器,则将按预期布置组件;大多数布局管理器的工作方式是获取其组件的首选(以及最小和最大)大小,然后根据布局规则使用setSize()
和setLocation()
放置这些组件。
例如,BorderLayout
尝试使“北部”区域的边界等于其北部部分的首选大小-最终可能会大于或小于该大小,具体取决于JFrame
的大小,其他部分的大小在布局中,依此类推。
setSize()
或setBounds()
在不使用布局管理器时使用。
但是,如果您使用的是布局管理器可以提供使用提示,布局管理器setXXXSize()
类似的方法setPreferredSize()
和setMinimumSize()
等。
并确保组件的容器使用符合要求大小的布局管理器。的FlowLayout
,GridBagLayout
和SpringLayout
管理人员使用组件的首选大小(后两者因限制设置),但BorderLayout
和GridLayout
平时don't.If您指定的新大小提示为已在可见的一个组成部分,你需要调用重新验证方法上以确保重新布置其包含层次结构。然后调用repaint方法。
setSize
将组件调整为指定大小。
setPreferredSize
设置首选大小。取决于组件所在容器的大小,或者用户是否手动调整了组件的大小,该组件实际上可能不是这个大小。
IIRC ...
setSize
设置组件的大小。
setPreferredSize
设置首选大小。Layoutmanager将尝试为您的组件安排那么多空间。
这取决于您是否使用布局管理器...