第一种,简单额只有一层的东南西北中的分区管理就不介绍了,主要介绍第二种

第二种,复杂的borderlayout布局,即在任何区中可以用容器(JPanel)来代替控件

例如下图

这种布局管理的思想是这样子的:

1、可以把组件放在这五个位置的任意一个,如果未指定位置,则缺省的位置是CENTER

2、在东、西、南、北和中间位置添加中间容器,中间容器中再进行布局,并添加相应的组件,已达到复制补间的效果。

3、南、北位置控件各占据一行,控件宽度将自动布满整行。东、西和中间位置占据一行;若东、西、南、北位置无控件,则中间控件将自动布满整个屏幕。若东、西、南、北位置中无论哪个位置没有控件,则中间位置控件将自动占据没有控件的位置。


4、强调一下container、Jpanel等的布局管理器是不可以共享的!!!每个容器都得有其自己的布局管理器

代码如下:

package hello;

import javax.swing.JFrame;
import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;

public class Lay extends JFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;//这一行必须要写!!!
	private JButton[] contro=new JButton[9];//创建一个九个控件的控件数组
	private String[] name={"5","01","02","03","04","1","2","3","4"};
	private Container container;//创建容器;
	private BorderLayout layout;//创建一个borderlayout布局控制器
	private JPanel In=new JPanel();
	public Lay()//构造函数
	{
		super("实例");
		layout=new BorderLayout();
		container=getContentPane();
		container.setLayout(layout);//给定布局方式
		for(int i=0;i<=8;i++)
		{
			contro[i]=new JButton(name[i]);
			//container.add(contro[i]);
		}
		//container.add("Center", contro[0]);//中间的区域会空出来
		container.add("North", contro[1]);
		container.add("South", contro[2]);
		container.add("East", contro[3]);
		container.add("West", contro[4]);
		In.setLayout(new BorderLayout());//每个容器都用其自己本身的布局管理器
		//上述代码很重要!!!
		
		In.add("North", contro[5]);
		In.add("Center", contro[0]);
		In.add("South", contro[6]);
		In.add("East", contro[7]);
		In.add("West", contro[8]);
		container.add("Center",In);//将两个布局进行叠加
		
		
		setVisible(true);
		setSize(800,600);
	}
	

	public static void main(String[] args) {
		Lay newpane=new Lay();
		newpane.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

}


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐