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

setPreferredSize设置首选大小。该组件实际上可能不是这个大小,取决于它所在的容器的大小,或者用户是否手动调整组件的大小。

 

setSize()如果你的组件的父母没有布局管理器,setPreferredSize()和它的相关setMinimumSizesetMaximumSize如果它使用。

setSize()如果组件的父级使用布局管理器,可能不会做任何事情这通常会产生影响的地方将在顶层组件(JFramesJWindows)以及内部的东西scrolled panessetSize()如果没有布局管理器的情况下,您还需要调用组件内部的组件。

 

1.setPreferredSize需要在使用布局管理器的时候使用,布局管理器将获取空间的preferredsize,因而可以生效。例如borderlayout在北中放入一个面板,面板的高度可以通过这样实现:panel.setPreferredSize(new Dimension(0,100));这样就设置了一个高度为100的面板,宽度随窗口变化。

2.setSize,setLocation,的setBounds方法需要在不使用布局管理器的时候使用,也就是setLayout的(空)的时候可以使用这三个方法控制布局。

 看源码也可以有所发现: setSize()和setLocation()是通过调用setBounds实现的

 

第一点,使用这个方法,componentxy坐标是相对于它的父容器的。如果不注意,xy的值,比父容器的宽度和高度还大的话,就容易造成加进去组件但是显示不出来的问题。我就是遇到这么一个问题,现在才想明白。

第二点,这个方法只有在父容器的布局方式为绝对布局时才管用,如果是别的布局方式,调用这个方法是没有效果的,只有采用setPreferredSize这个方法才管用。不同的布局方式有不同的设置方法。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐