2018-03-09
本章我们将学到的知识点:
1、AWT简介 2、容器组件 3、布局管理器 4、常用组件
一、AWT简介
AWT(Abstract Window Toolkit/抽象窗口工具包)是API为Java程序提供的建立图形用户界面GUI(Graphics User Interface)工具集。
优点: AWT提供用于创建生动而高效的GUI的各种组件。 GUI以通过键盘或鼠标来响应用户的操作。
1、AWT主要又以下三个部分组成;
组件(Component):定义了所有的图形化界面元素及绘制方法,其中大多数组件是从抽象类Component派生而来。
容器(Containers):容器类用于包含组件,也可以包含容器以便统一操作和管理。 在容器中可以设定它所包含组件的布局方式 组件必须被包含到容器中
布局管理器(Layouts):用于规定用户接口的所有组件在屏幕上如何布置和怎样使界面作到与平台无关。
2、Component组件及其子类:
组件(Component):是Java的图形用户界面的最基本组成部分;是许多组件类的父类,Component类中封装了组件通用的方法和属性 。
getComponentAt(int x, int y)
getFont()
getForeground()
getName()
getSize()
paint(Graphics g)
repaint()
update()
setVisible(boolean b)
setSize(Dimension d)
setName(String name)
二、容 器 --Frame-1
Frame是Window的一个子类,是带有标题和缩放角的窗口。
1、Frame可以设置自己的标题、边框、菜单、大小等等 。
2、默认的Frame实例化对象都是没有大小和不可见的,必须调用setSize( )来设置大小,调用setVisible(true)来设置该窗口为可见的。
Frame的构造函数:
public Frame( )
public Frame(String title)
public Frame(GraphicsConfiguration gc)
public Frame(String title, GraphicsConfiguration gc)
Panel :面板是一个简单的容器类,用于容纳其他的组件或是面板。它有自己的布局管理器。
Panel必须放在Window或其子类才能显示出来。
构造函数:
Public Panel()
Public Panel(LayoutManager lg)
三、布局管理器主要包括:
流程布局FlowLayout
边框布局BorderLayout
网格布局GridLayout
卡布局CardLayout
网格包布局GridBagLayout
1、流程布局 FlowLayout-1
1、FlowLayout是Panel和Applet的缺省布局管理器。
2、组件的放置规律是从左到右、从上到下进行放置 。
3、容器大小改变时,组件大小不变,相对位置会发生变化。
构造函数:
FlowLayout( );
FlowLayout(int align );
FlowLayout(int align, int hgap, int vgap );
参数说明:
缺省的对齐方式居中对齐,默认的组件横纵间隔都是5个像素
align :对齐方式left ,right ,center ,leading ,trailing
hgap: 水平间隔
vgap: 垂直间隔
2、网格布局 GridLayout-1
1、容器中组件呈网格状布局,平均占据容器的空间。 2、容器中各个组件同高同宽。 3、容器大小改变时,组件位置不变,大小改变。
//GridLayout构造函数: public GridLayout( ) public GridLayout(int rows, int cols) public GridLayout(int rows, int cols, int hgap, int vgap)
参数说明: 默认情况下,每行一个组件。即只有一列。 rows指定行数,cols指定列数。 hgap: 水平间隔,单位像素。 vgap: 垂直间隔,单位像素。
3、边框布局 BorderLayout-1
1、BorderLayout是Window,Frame和Dialog的缺省布局管理器。
2、BorderLayout把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个组件。
3、容器大小变化时,组件相对位置不变,大小发生变化
4、如果四周没有组件,则由中间的组件来填充;如果中间没有组件,则空着。
//构造函数: public BorderLayout( ) public BorderLayout(int hgap, int vgap)
参数说明: Hgap: 水平间隔,单位像素 Vgap: 垂直间隔,单位像素 如果不制定间隔宽度,则组件间是彼此相邻的。
4、卡布局 CardLayout-1
1、容器分成许多层,每个组件都是重叠的。 2、每个组件占据整个容器的大小。 3、每层只允许放置一个组件 。 4、一次只显示一个组件。
//cardLayout构造函数: public CardLayout() public CardLayout(int hgap, int vgap)
参数说明 1、默认是无间隔的。 2、hgap 水平间隔,表示组件左右两边和容器的间隔,以像素为单位。 3、vgap 垂直间隔,表示组件上下两边和容器的间隔,以像素为单位。
5、网格包布局 GridBagLayout-1
GridBagLayout提供了一种强大的控制能力,它包括精确判断视窗区域如何布局,以及视窗大小变化时候该如何重新设置组件。主要是为了辅助GUI构造工具自动生成代码。
//按钮(Button) public Button() public Button(String label) //如: Button b1 = new Button(); Button okb = new Button(“OK”); //标签(Label) Public Label( ) Public Label(String text) Public Label(String text,int alignmnet) //如: Label nameLabel = new Label(“姓名”); Label sexLabel = new Label(“性别”,Label.CENTER); //单行文本输入区(TextField) public TextField( ) //创建一个空字符的输入框 public TextField(String text) //用指定的字符串创建一个输入框 public TextField(int colu) //创建一个空的输入框,规定字符长度类似不超过 col指定的数字 public TextField(String text, int columns) //用指定的字符串创建一个输入框,规定字符长度类似不超过 col指定的数字。 //例如: TextField t1 = new TextField(“name”,10); TextField t2 = new TextField(“sex”);