1、山东商业职业技术学院Java程序设计课程开发组swing布局管理2 2 学习目标1. 掌握常用的swing布局3 3 布局的概念n布局是指组件在容器中的排列方式,主要有:FlowLayout流式布局BorderLayout边界布局GridLayout网格布局CardLayout卡片布局BoxLayout盒式布局GridBagLayout网格包布局null空布局(不使用布局)注:对于一些复杂的情况,往往需要使用容器的嵌套,各容器可使用不同的布局。当容器的尺寸改变时,布局管理器会自动调整组件的排列该布局以行为单位依次排列各组件,一行排不下时,另起一行JPanel的默认布局是FlowLayout构造
2、方法FlowLayout();FlowLayout(int align);/align一般取值有:CENTER、LEFT、RIGHTFlowLayout(int align,int hgap,int vgap);/hgap和vgap指定组件与容器起始边界以及组件间的水平和垂直间距,默认值为5个像素例如:FlowLayout layout = new FlowLayout(FlowLayout.LEFT, 10, 10);n创建FlowLayout布局对象FlowLayout l = new FlowLayout();n创建容器对象JPanel panel = new JPanel();n设置容
3、器对象的布局或使用默认布局panel.setLayout(l);n向容器中添加组件对象(设组件对象已创建)panel.add(组件对象);6 6 例如,setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20); 缺点:当用户对由FlowLayout布局管理的区域进行缩放时,布局发生变化。改变窗口大小改变窗口大小该布局适用于组件个数较少的情况该布局适用于组件个数较少的情况。n按照东、西、南、北、中5个方位排列各组件n顶层容器JFrame、JApplet、JDialog、JWindow的默认布局都是BorderLayoutn构造方法BorderLayout
4、();BorderLayout(int hgap,int vgap);/hgap和vgap指定组件间的水平和垂直间距,默认值为0个像素例如:BorderLayout lay1 = new BorderLayout();BorderLayout lay2 = new BorderLayout(10, 10);n创建BorderLayout布局对象BorderLayout l = new BorderLayout();n创建容器对象JPanel panel = new JPanel();n设置容器对象的布局或使用默认布局panel.setLayout(l);n向容器中添加组件对象(设组件对象已创建
5、) panel.add(组件对象,方位);/方位的取值为:BorderLayout.EAST 或 “East”BorderLayout.WEST 或 “West”BorderLayout.SOUTH 或 “South”BorderLayout.NORTH 或 “North”BorderLayout.CENTER 或 “Center”(默认) 缺点:当加入的组件超过缺点:当加入的组件超过5个时,就必须使用容器个时,就必须使用容器的嵌套或其它布局。的嵌套或其它布局。 优点:当容器缩放时,组件相应的位置不变化,优点:当容器缩放时,组件相应的位置不变化,但大小改变。但大小改变。示例:示例: 边界布局示
6、例边界布局示例n按照二维网格以相同大小依次排列各组件n构造方法GridLayout();/一行、每个组件一列GridLayout(int rows,int cols);/行列数GridLayout(rows,cols,int hgap,int vgap);/行行、列列的间距,默认值为0个像素例如:GridLayout lay1 = new GridLayout(3,3); GridLayout lay2 = new GridLayout(5,2,10,10);n创建GridLayout布局对象GridLayout l = new GridLayout(2,2);n创建容器对象JPanel pa
7、nel = new JPanel();n设置容器对象的布局或使用默认布局panel.setLayout(l);n向容器中添加组件对象(设组件对象已创建)panel.add(组件对象);改 变 窗 口 大 小改 变 窗 口 大 小该布局适用于组件个数较多的情况该布局适用于组件个数较多的情况。 优点:组件的相应位置不随区域的缩放而改优点:组件的相应位置不随区域的缩放而改变,只是组件的大小改变。变,只是组件的大小改变。n不使用任何布局管理器,一般不使用该方式n空布局的使用创建容器对象JPanel panel = new JPanel();设置容器对象的布局为nullpanel.setLayout(null);设置组件在容器中的位置组件对象.setBounds(x, y, width, height);向容器中添加组件对象(设组件对象已创建)panel.add(组件对象);1.实现如下界面:山东商业职业技术学院Java程序设计课程开发组感谢您的学习