为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUWWW 2019-07-10 15:58:17
Java:组件中setPreferredSize()和setSize()方法之间的区别好的,我阅读了Java文档,只是不知道这两种方法之间的主要区别是什么。有时我用setSize(),有时setPreferredSize()有时一个做我想做的,有时做另一个。那么,两者的主要区别是什么呢?我该用哪一个JFrames和JPanels?谢谢
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

简单的回答是:这很复杂。

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

setSize()如果组件的父级使用布局管理器,则可能不会做任何事情;这通常会产生影响的位置将位于顶层组件(JFramesJWindows)和里面的东西scrolled panes..你也必须打电话给setSize()如果在没有布局管理器的父级中有组件。

作为一般规则,setPreferredSize()如果您有一个布局管理器,那么应该做“正确的事情”;大多数布局管理器的工作方法是获取其组件的首选(以及最小和最大)大小,然后使用setSize()setLocation()根据布局规则定位这些组件。所以(举个例子)BorderLayout将试图使其“北方”区域的边界与preferred size它的北方部分-它们可能会变大或变小,这取决于jframe、布局中其他组件的大小等等。


查看完整回答
反对 回复 2019-07-10
?
炎炎设计

TA贡献1808条经验 获得超4个赞

setSize()setBounds()当没有使用布局管理器时,可以使用。

但是,如果使用的是布局管理器,则可以使用setXXXSize()方法,如setPreferredSize()setMinimumSize()等。

并确保组件的容器使用符合请求大小的布局管理器。这个FlowLayoutGridBagLayout,和SpringLayout管理器使用组件的首选大小(后两个取决于您设置的约束),但是BorderLayoutGridLayout如果您为一个已经可见的组件指定了新的大小提示,则需要调用它上的重新验证方法,以确保它的包含层次结构再次布局。然后调用重新绘制方法。


查看完整回答
反对 回复 2019-07-10
?
噜噜哒

TA贡献1784条经验 获得超7个赞

setSize将组件的大小调整到指定的大小。

setPreferredSize设置首选大小。根据其所在容器的大小,或者如果用户手动调整组件的大小,组件可能实际上不是这个大小。


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 5605 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号