BorderLayout
这种布局管理器分为东、南、西、北、中心五个方位。北和南的组件可以在水平方向上拉伸;而东和西的组件可以在垂直方向上拉伸;中心的组件可同时在水平和垂直方向上同时拉伸,从而填充所有剩余空间。在使用BorderLayout的时候,如果容器的大小发生变化,其变化规律为:组件的相对位置不变,大小发生变化。例如容器变高了,则North、South 区域不变,West、Center、East区域变高;如果容器变宽了,West、East区域不变,North、Center、South区域变宽。不一定所有的区域都有组件,如果四周区域(West、East、North、South区域)没有组件,则由Center区域去补充,但是如果 Center区域没有组件,则保持空白。
BorderLayout是RootPaneContainer(JInternalFrame、JDialog、JFrame、JWindow)的默认布局管理器。5个方位的组件大小不可调整,又容器自动调整。
package gui.event;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import javax.swing.JFrame;
/**
* Hello world!
*
*/
public class App extends JFrame {
public static void main(String[] args) {
/*
* SwingUtilities.invokeLater(new Runnable() {
*
* @Override public void run() { new App(); } });
*/
Frame f = new Frame("BorderLayout");
f.setLayout(new BorderLayout());
Button north = new Button("North");
north.setSize(50, 50);
f.add("North", north);
// 第一个参数表示把按钮添加到容器的North区域
f.add("South", new Button("South"));
// 第一个参数表示把按钮添加到容器的South区域
f.add("East", new Button("East"));
// 第一个参数表示把按钮添加到容器的East区域
f.add("West", new Button("West"));
// 第一个参数表示把按钮添加到容器的West区域
f.add("Center", new Button("Center"));
// 第一个参数表示把按钮添加到容器的Center区域
f.setSize(200, 200);
f.setVisible(true);
}
}
效果如下
FlowLayout
流式布局管理器,是从左到右,中间放置,一行放不下就换到另外一行。一行能放置多少组件取决于窗口的宽度。默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中(FlowLayout.CENTER)。FlowLayout为小应用程序(Applet)和面板(Panel)的默认布局管理器。其构造函数示例为:
FlowLayout() //生成一个默认的流式布局,组件在容器里居中,每个组件之间留下5个像素的距离。
FlowLayout(int alinment) //可以设定每行组件的对齐方式。
FlowLayout(int alignment , int horz , int vert) //设定对齐方式并设定组件水平和垂直的距离。
当容器的大小发生变化时,用FlowLayout管理的组件会发生变化。其变化规律是:组件的大小不变,但是相对位置会发生变化。
水平居中对齐
CardLayout
这种布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面
切换层,调用方法card.next("所有层的parent")