GUI——布局管理器

GUI——布局管理器

1.GUI之布局管理器

布局管理器

java语言中,提供了布局管理器类的对象可以管理

管理Component在Container中的布局,不必直接设置Component的位置和大小

每个Container都有一个布局管理器对象,当容器需要对某个组件进行定位或判断尺寸大小时,

就会调用其对应的布局管理器,调用Container的setLayout方法,改变其布局管理器对象。

AWT提供了五种布局管理器类

FlowLayout

BorderLayout

GridLayout

CardLayout

GridBagLayout

2.FlowLayout布局管理器(流式布局,顺序布局)

java.awt

Class FlowLayout

FlowLayout时Panel类的默认布局管理器

FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。

不改变组件的大小,按组件原始尺寸显示组件,可设置不同的组件间距,行距和对其方式。

FlowLayout布局管理器默认的对其方式时居中。

FlowLayout的构造方法

Constructor Summary(构造函数的总结)

Constructors(构造函数)

Constructor and Description(构造函数和描述)

FlowLayout()

Constructs a new FlowLayout with a centered alignment and a default 5-unit horizontal and vertical gap.

FlowLayout(int align)

Constructs a new FlowLayout with the specified alignment and a default 5-unit horizontal and vertical gap.

FlowLayout(int align, int hgap, int vgap)

Creates a new flow layout manager with the indicated alignment and the indicated horizontal and vertical gaps.

实例1:

/*	范例名称:FlowLayout 用法举例
 * 源文件名称:TestFlowLayout.java
 *	要  点:
 *	1. 布局管理器的概念和作用
 *   2. FlowLayout的性质及用法
 */

import java.awt.*;

public class TestFlowLayout {
    public static void main(String args[]) {
Frame f = new Frame("Flow Layout");
        Button button1 = new Button("Ok");
        Button button2 = new Button("Open");
        Button button3 = new Button("Close");
//new FlowLayout(FlowLayout.LEFT)设置Frame的布局,默认为居中,此次为左对齐
        f.setLayout(new FlowLayout(FlowLayout.LEFT));
        f.add(button1);
        f.add(button2);
        f.add(button3);
        f.setSize(100,100);
        f.setVisible(true);
    }
}

实例2:

import java.awt.*;
public class TestFlowLayout2 {
    public static void main(String args[]) {
        Frame f = new Frame("Java Frame");
//创建一个新的流布局管理器,该布局管理器具有指示对齐和指示的水平和垂直间隔。(对齐,水平,垂直)
        FlowLayout l = new FlowLayout(FlowLayout.CENTER, 20, 40);
//为Frame设置布局方式
        f.setLayout(l); 
//设置位置
        f.setLocation(300,400);
//设置大小
        f.setSize(300,200);
设置背景色
        f.setBackground(new Color(204,204,255));
        for(int i = 1; i<=7; i++){
            f.add(new Button("BUTTON"));
        }
        f.setVisible(true);
    }
}

3.BorderLayout布局管理器(边框布局,边界布局,边界布局管理器)

java.awt

Class BorderLayout

BorderLayout时Frame的默认布局管理器,

BorderLayout将整个容器的布局划分成东西南北中五个区域,组件只能被添加到指定区域。

东EAST

西WEST

南SOUTH

北NOUTH

中CENTER

不指定组件的加入部位,则默认加入到CENTER区。

每个区域只能加入一个组件,如加入多个,先前加入的会被覆盖。

BorderLayout布局,容器尺寸缩放原则

南,北两个区域在水平方向缩放

东,西两个区域在垂直方向缩放

中部可在两个方向上缩放

实例3:

/*	范例名称:BorderLayout应用举例
 * 源文件名称:TestBorderLayout.java
 *	要  点:FlowLayout布局管理器的性质及用法
 */

import java.awt.*;
public class TestBorderLayout {
public static void main(String args[]) {
Frame f;
f = new Frame("Border Layout");
Button bn = new Button("BN");
Button bs = new Button("BS");
Button bw = new Button("BW");
Button be = new Button("BE");
Button bc = new Button("BC");
f.add(bn, "North");
f.add(bs, "South");
f.add(bw, "West");
f.add(be, "East");
f.add(bc, "Center");
// 也可使用下述语句,推荐使用下面这种形式,不容易出错
/*
f.add(bn, BorderLayout.NORTH);
f.add(bs, BorderLayout.SOUTH);
f.add(bw, BorderLayout.WEST);
f.add(be, BorderLayout.EAST);
f.add(bc, BorderLayout.CENTER);
*/
f.setSize(200,200);
f.setVisible(true);
}
}

4.GridLayout布局管理器(网格布局 )

java.awt

Class GridLayout

GridLayout布局管理器将空间划分成规则的矩形网格,

每个单元格区域大小相等。

组件被添加到每个单元格中,先从左到有填满一行后换行。再从上到下。

在GridLayout构造方法中指定分割的行数和列数。

如:

GridLayout(3,4);//三行四列

实例4:

/*	范例名称:GridLayout应用举例
 * 源文件名称:TestGridLayout
 *	要  点:GridLayout布局管理器的性质及用法
 */

import java.awt.*;
public class TestGridLayout {
public static void main(String args[]) {
        Frame f = new Frame("GridLayout Example");
        Button b1 = new Button("b1");
        Button b2 = new Button("b2");
        Button b3 = new Button("b3");
        Button b4 = new Button("b4");
        Button b5 = new Button("b5");
        Button b6 = new Button("b6");
        f.setLayout (new GridLayout(3,2));
        f.add(b1);        
        f.add(b2);
        f.add(b3);        
        f.add(b4);
        f.add(b5);        
        f.add(b6);
//pack();打包,
        f.pack();          
        f.setVisible(true);
}
}

5.测试练习

用FlowLayout,BorderLayout,GridLayout来实现较为复杂的布局。

实例5:

import java.awt.*;
public class TenButtons {
  public static void main(String args[]) {
    Frame f = new Frame("Java Frame");
//两行一列
    f.setLayout(new GridLayout(2,1)); 
    f.setLocation(300,400);
    f.setSize(300,200);
    f.setBackground(new Color(204,204,255));
    Panel p1 = new Panel(new BorderLayout());
    Panel p2 = new Panel(new BorderLayout());
Panel p11 = new Panel(new GridLayout(2,1));
    Panel p21 = new Panel(new GridLayout(2,2));
    p1.add(new Button("BUTTON"),BorderLayout.WEST);
    p1.add(new Button("BUTTON"),BorderLayout.EAST);
    p11.add(new Button("BUTTON"));
    p11.add(new Button("BUTTON"));
    p1.add(p11,BorderLayout.CENTER);
    p2.add(new Button("BUTTON"),BorderLayout.WEST);
    p2.add(new Button("BUTTON"),BorderLayout.EAST);
    for(int i =1;i<=4;i++) {p21.add(new Button("BUTTON"));} 
    p2.add(p21,BorderLayout.CENTER);
    f.add(p1);
f.add(p2);
    f.setVisible(true);
  }
}

 

 

猜你喜欢

转载自mfcfine.iteye.com/blog/2391156