第一种,简单额只有一层的东南西北中的分区管理就不介绍了,主要介绍第二种
第二种,复杂的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); } }
评论前必须登录!
注册