[疯狂Java笔记]AWT:BorderLayout方位布局

1. BorderLayout——方位布局:

    1) 布局分为东西南北中五个方位,每个方位中只能放一个组件,如果同时放了多个组件,那么后放入的就会覆盖之前放入的,这点非常值得注意!

    2) 如果添加组件时没有指定放在哪个方位则默认放在中;

    3) 当BorderLayout布局的容器改变大小(发生拉伸)时,南北位只会水平伸缩,东西位只会垂直伸缩,而中会同时在水平和垂直方向上伸缩;

    4) Window系(Frame、Dialog)和ScrollPane都是默认方位布局的;

    5) 在对框架使用setLayout设定好方位布局之后,就可以在add组件的时候可以指定具体将组件放入那个方位中,这就Container类中对add的重载:

Component Container.add(Component comp, int index); // index就是在不同布局模式下特定的索引

!!在BorderLayout中就是5个方位,是BorderLayout类中定义的静态常量:NORTH、SOUTH、WEST、EAST、CENTER

!例如:f.add(new Button("test"), BorderLayout.EAST);

!!如果不指定方位,则默认加入到中部

    6) 构造器:

         i. 默认构造器:BorderLayout(); // 使用默认的

         ii. 指定水平和垂直间距(组件之间的):BorderLayout(int hgap, int vgap);

    7) 示例:

public class AwtTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Frame f = new Frame("BorderLayout Test");
		f.setLayout(new BorderLayout(30, 5));
		
		f.add(new Button("East"), BorderLayout.EAST);
		f.add(new Button("West"), BorderLayout.WEST);
		f.add(new Button("Center")); // 默认放在中部
		f.add(new Button("North"), BorderLayout.NORTH);
		f.add(new Button("South"), BorderLayout.SOUTH);
		
		f.pack();
		f.setVisible(true);
	}

}

    8) 虽然方位布局只能容纳五个组件,看上去很没用,但是容器是可以嵌套的,一旦嵌套起来就可以形成很复杂的画面了,示例:嵌套一个Panel

public class AwtTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Frame f = new Frame("BorderLayout Test");
		f.setLayout(new BorderLayout(30, 5));
		
		Panel p = new Panel();
		p.add(new TextField(20));
		p.add(new Button("push"));
		
		f.add(new Button("East"), BorderLayout.EAST);
		// no WEST,一旦一个方位没有放组件,那么相邻的方位就会侵占它的空间
		f.add(p); 
		f.add(new Button("North"), BorderLayout.NORTH);
		f.add(new Button("South"), BorderLayout.SOUTH);
		
		f.pack();
		f.setVisible(true);
	}

}

你可能感兴趣的:(awt,BorderLayout,疯狂Java)