代码改变世界

Java布局管理器

2012-07-30 21:10  javaspring  阅读(323)  评论(0编辑  收藏  举报

在AWT中,有五种布局管理器分别是:

BorderLayout

FlowLayout

GridLayout

CardLayout

GridBagLayout

先看看代码

import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;


public class MyFrame implements WindowListener{
	
	public static void main(String []args)
	{
		Frame f=new Frame("zhycheng");
		f.setSize(300, 400);
		f.setLocation(400, 300);
		f.setBackground(Color.CYAN);
		f.setLayout(new BorderLayout(10,10));
		//f.setLayout(new FlowLayout(FlowLayout.RIGHT));
		//f.setLayout(new GridLayout(3,2,10,10));
		Button btn=new Button("winsun");
		f.add(btn,"Center");
		Button btn1=new Button("north");
		f.add(btn1,"North");
		Button btn2=new Button("South");
		f.add(btn2,"South");
		Button btn3=new Button("West");
		f.add(btn3,"West");
		Button btn4=new Button("East");
		f.add(btn4,"East");
		f.setVisible(true);
		f.addWindowListener(new MyFrame());
	}

	@Override
	public void windowOpened(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowClosing(WindowEvent e) {
		// TODO Auto-generated method stub
		System.exit(0);
		
	}

	@Override
	public void windowClosed(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowIconified(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowDeiconified(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowActivated(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowDeactivated(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

}
1.BorderLayout

BorderLayout将Frame分为5部分,Center,North,South,West,East。BorderLayout也是Frame的默认的布局。

f.setLayout(new BorderLayout(10,10));其中的两个10分别表示组件之间的水平间隙和垂直间隙
效果如图


2.FlowLayout

FlowLayout是流式布局,将组件依次摆放

f.setLayout(new FlowLayout(FlowLayout.RIGHT));中的参数是右对齐。当然,也有左对齐,默认居中

效果如下


3.GridLayout

GridLayout是网格布局,将容器分为网格。

f.setLayout(new GridLayout(3,2,10,10));将容器分为3行2列,格子之间的水平和垂直间隙都为10.

效果如下


4.CardLayout

CardLayout可以实现翻牌的效果。CardLayout对象的next()方法来实现代码有所改动,所以我将全部的代码都贴出来

import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;


public class MyFrame implements WindowListener{
	
	public static void main(String []args)
	{
		final Frame f=new Frame("zhycheng");
		f.setSize(300, 400);
		f.setLocation(400, 300);
		f.setBackground(Color.CYAN);
		//f.setLayout(new BorderLayout(10,10));
		//f.setLayout(new FlowLayout(FlowLayout.RIGHT));
		//f.setLayout(new GridLayout(3,2,10,10));
		final CardLayout cl=new CardLayout();
		f.setLayout(cl);
		ActionListener al=new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				cl.next(f);
				
			}};
		Button btn=new Button("winsun");
		btn.addActionListener(al);
		f.add(btn,"Center");
		Button btn1=new Button("north");
		btn1.addActionListener(al);
		f.add(btn1,"North");
		Button btn2=new Button("South");
		btn2.addActionListener(al);
		f.add(btn2,"South");
		Button btn3=new Button("West");
		btn3.addActionListener(al);
		f.add(btn3,"West");
		Button btn4=new Button("East");
		btn4.addActionListener(al);
		f.add(btn4,"East");
		f.setVisible(true);
		f.addWindowListener(new MyFrame());
	}

	@Override
	public void windowOpened(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowClosing(WindowEvent e) {
		// TODO Auto-generated method stub
		System.exit(0);
		
	}

	@Override
	public void windowClosed(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowIconified(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowDeiconified(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowActivated(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowDeactivated(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

}

效果如图