setSize()和之间的主要区别是什么setPreferredSize()。有时我用了setSize(),有时是setPreferredSize(),有时是一个做我想做的,有时是另一个。
JFrames和JPanels 应该使用什么电话?
setSize()和之间的主要区别是什么setPreferredSize()。有时我用了setSize(),有时是setPreferredSize(),有时是一个做我想做的,有时是另一个。
JFrames和JPanels 应该使用什么电话?
Answers:
用法取决于组件的父级是否具有布局管理器。
setSize() -在父级布局管理器不存在时使用;setPreferredSize()(及其相关的setMinimumSize和setMaximumSize)-在存在父级布局管理器时使用。setSize()如果组件的父级使用布局管理器,则该方法可能不会执行任何操作。通常会在顶层组件(JFrames和JWindows)以及滚动窗格内部的内容上产生影响的地方。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将尝试为您的组件安排那么多空间。
这取决于您是否使用布局管理器...