JFrame的BorderLayout
JFrame的默认布局就是BorderLayout,即将一个窗体划分为东西南北中五个板块。
如果往其中添加组件,中间面板大小随窗体大小变化,其余部分根据添加的组件的大小自适应。
容器变高,则North,South区域不变,West,East,Center区域变高
容器变宽,则West,East区域不变,North,South,Center区域变宽
注意,这种布局下,每个区域最多只能包含一个组件。
五个区域默认是看不到边界线的,即距离为0.
如何设置间距?
BorderLayout(): 构造一个组件之间没有间距(默认间距为0像素)的新边框布局
BorderLayout(int hgap, int vgap) : 构造一个具有指定组件(hgap为横向间距,vgap为纵向间距)间距的边框布局
int getHgap() : 返回组件之间的水平间距。
int getVgap() :返回组件之间的垂直间距。
void removeLayoutComponent(Component comp): 从此边框布局中移除指定组件。
void setHgap(int hgap):设置组件之间的水平间距。
void setVgap(int vgap) :设置组件之间的垂直间距。
那么如何控制这几个板块的高度与宽度?
我们发现setSize,setLocation,setBounds,或者setMaximumSize()和setMinimumSize()都达不到效果
需要使用setPreferredSize。
1.setPreferredSize需要在使用布局管理器的时候使用,布局管理器会获取空间的preferredsize,因而可以生效。例如borderlayout在north中放入一个panel,panel的高度可以通过这样实现:panel.setPreferredSize(new Dimension(0, 100));JFrame.getContentPane().add(panel,BorderLayout.SOUTH);这样就设置了一个高度为100的panel,宽度随窗口变化。
2.setSize,setLocation,setBounds方法需要在不使用布局管理器的时候使用,也就是setLayout(null)的时候可以使用这三个方法控制布局。
设置按钮大小用setSize无效?
button.setPreferredSize(new Dimension(80,50));
这样就可以了。
设置间隔?
设置组件的位置,左对齐,居中,右对齐?
重新设置为FlowLayout布局