实现如下图所示的布局
思路:将整个窗口拆分为两大块,上面面板和下面面板,其中上面的面板包括两个面板,一个是大的面板p1,p1里面有p2面板。p1面板采用BorderLayout布局,p2为GridLayout布局。同理进行下面面板的布局。
package bili_01;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test {
public static void main(String[] args) {
Frame frame = new Frame("练习布局");
//设置窗口大小
frame.setSize(600, 600);
// 总的。分别为2行1列,即上面和下面
frame.setLayout(new GridLayout(2, 1));
// 上面的总面板
Panel p1 = new Panel(new BorderLayout());
// 上面中间的面板
Panel p2 = new Panel(new GridLayout(2, 1));
// 上面左边和右边的按钮
p1.add(new Button("p1-west"), BorderLayout.WEST);
p1.add(new Button("p1-east"), BorderLayout.EAST);
// 上面中间的上下按钮
p2.add(new Button("p2-上"));
p2.add(new Button("p2-下"));
// 将p2加入到p1总面板的中间
p1.add(p2, BorderLayout.CENTER);
//窗口添加p1面板
frame.add(p1);
// 下面的总面板
Panel p3 = new Panel(new BorderLayout());
// 下面总面板的中间面板
Panel p4 = new Panel(new GridLayout(2,2));
// 下面的左右按钮
p3.add(new Button("p3-west"), BorderLayout.WEST);
p3.add(new Button("p3-east"), BorderLayout.EAST);
// 下面中间的四个按钮
p4.add(new Button("p4-1"));
p4.add(new Button("p4-2"));
p4.add(new Button("p4-3"));
p4.add(new Button("p4-4"));
//将p4加到p3的中间
p3.add(p4,BorderLayout.CENTER);
//窗口添加p3面板
frame.add(p3);
//显示
frame.setVisible(true);
//监听关闭事件
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}