基础知识:
1、AbstractWindow(AWT):定义了多种类和接口,用于在Java Application / Applet中进行GUI设计;
2、Graphical User Interface(GUI):必须是抽象类Component或MenuComponent的子类;
3、设计组建(Component):包括设计Java.awt包中提供的组件和用户自定义的组件;
4、指定布局(Layout):根据设计需要排列容器内各组件的位置;
5、设计响应事件(Event):用于对组件发生事件的响应事件;
为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。
每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。
创建窗口的基本和必要操作包括以下方面:
(1)可以设置窗口的大小
(2)给窗口一个标题
(3)在屏幕的某个位置放置窗口
(4)显示窗口
(5)关闭窗口
FlowLayout布局管理器
1、FlowLayout是Panel类的默认布局管理器;
2、FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行;
3、默认对齐方式为居中对齐;
4、不改变组件的大小,按组件原有尺寸显示组件 可在构造方法中设置不同的组件间距、行距及对齐方式;
FlowLayout的构造方法
1、new FlowLayout(FlowLayout.RIGHT,20,40);
右对齐,组件之间水平间距20个像素,竖直间距40个像素;
2、new FlowLayout(FlowLayout.LEFT);
左对齐,水平和竖直间距为缺省值:5;
3、new FlowLayout();
使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;
BorderLayout布局管理器
1、BorderLayout是Frame类的默认布局管理器;
2、BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域;
3、如不指定组件的加入部位,则默认加入到Center区域;
4、每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃;
BorderLayout型布局容器尺寸缩放原则
1、北、南两个区域只能在水平方向缩放(宽度可调整);
2、东、西两个区域只能在垂直方向缩放(高度可调整);
3、中部可在两个方向上缩放;
GridLayout布局管理器
1、GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等
2、组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下.
3、在GridLayout构造方法中指定分割的行数和列数
注意:
1、CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,就好象一叠卡片摞在一起
2、在一张卡片中只能显示一个组件,因此可以使用容器嵌套方法显示多个组件
布局管理器总结
Frame
1、Frame是一个顶级窗口。
2、Frame的缺省布局管理器为BorderLayout。
Panel
1、Panel无法单独显示,必须添加到某个容器中;
2、Panel的缺省布局管理器为FlowLayout;
3、当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某个区域显示多个组件;
在程序中安排组件的位置和大小时,应注意:
1、容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java
语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。
2、如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:
setLayout(null);
组件一般步骤
注意:一个组件在图形界面中需要添加到容器中才能看到,通过Component类对象的方法add()将一个组件添加到容器中。
Component组件类的常用方法
1、setBounds(int x, int y, int width, int height) ------调整组件的位置和大小
2、setBackground(Color c) -------设置背景色
3、setForeground (Color c) -------设置前景色
4、setVisible(boolean b) ------显示或隐藏组件
5、setFont(Font f )------设置字体
包含组件的组件——容器
1、AWT使用Container类来定义最基本的组件容器,它有两个子类:Window类和Panel类。
2、在Window类还有两个子类:
(1) 定义对话框,用Dialog子类;
FileDialog------文件对话框
(2) 定义框架,用Frame类。
3、常用方法:void setLayout(LayoutManager mgr);
Frame类的方法
Frame类的构造方法 |
主要功能 |
Frame() |
创建没有标题的窗口 |
Frame(String title) |
创建以title为标题的窗口 |
Frame类的方法 |
主要功能 |
int getState() |
获得Frame窗口的状态(Frame.Normal表示一般状态,Frame.ICONIFIED表示最小化状态) |
void setState(int state) |
设置Frame窗口的状态(Frame.Normal表示一般状态,Frame.ICONIFIED表示最小化状态) |
String getTitle() |
获得Frame窗口的标题 |
void setTitle(String title) |
设置Frame窗口的标题 |
boolean isResizable() |
测试Frame窗口是否可以改变大小 |
void setResizable(boolean r) |
设置Frame窗口是否可以改变大小 |
Image getIconImage() |
返回窗口的最小化图标 |
void setIconImage(Image img) |
设置窗口的最小化图标为img |
标签组件(Label类)
1、标签是用来在窗口中显示文字的组件。
2、它是由java.awt类库中的Label类来创建。
3、通过getText()方法获得标签所显示的文字;通过setText()方法可以改变标签内的文字。
Label类的方法
Label类的构造方法 |
主要功能 |
Label() |
创建一个没有文字的标签 |
Label(String str) |
创建一个以str为文字的标签 |
Label(String str,int align) |
创建一个以str为文字的标签,并以align为对齐方式,其中Label.LEFT、Label.CENTER、Label.RIGHT分别为居左、居中和居右 |
Label类的方法 |
主要功能 |
int getAlignment() |
返回标签内文字的对齐方式 (0代表Lable.LEFT,1代表Label.CENTER,2代表Label.RIGHT) |
void setAlignment(int align) |
设置标签内文字的对齐方式 |
String getText() |
获得标签内的文字 |
void setText(String text) |
设置标签内的文字 |
Button类的方法
Button类的构造方法 |
主要功能 |
Button() |
创建一个没有标题的按钮 |
Button(String str) |
创建一个以str为标题的按钮 |
Button类的方法 |
主要功能 |
String getLabel() |
获得按钮的标题 |
Void setLabel(String str) |
设置按钮的标题为str |
文本框(TextField类)的方法
TextField类的构造方法 |
主要功能 |
TextField() |
创建一个空的文本框 |
TextField(int columns) |
创建一个空的文本框,具有指定列数 |
TextField(String text) |
创建一个包含有指定“text”内容文本框 |
TextField(String text,int culumns) |
创建一个包含有指定列数和“text”内容的文本框 |
TextField类的方法 |
主要功能 |
String getText() |
获得文本框的内容 |
int getColumns() |
获得文本框的列数 |
void setText(String text) |
设置文本框的内容为text |
void setColumns(int columns) |
设置文本框的列数 |
复选框(Checkbox)和单选框()
复选框对象的生成方法如下:
checkbox chbobj = new checkbox ("one",null,true);
1、第一个参数是复选框的文本标签;
2、第二个参数为复选框的组名,当组名为空时,表示生成的对象是复选框,如果组名不为空,表示生成的对象是单选框;
3、第三个参数代表复选框对象的状态,true表示生成的复选框对象为选中状态,false表示非选中状态;
单选框对象的生成方法如下:
checkbox chbobj = new checkbox ("one",null,true);
Checkbox c1 = new Checkbox ("one",cbgobj,true);
Checkbox c2 = new Checkbox (“two”,cbgobj,false);
1、第一个语句生成复选框组对象,第二个和第三个语句生成复选框对象;
2、通过将第二个参数指定生成的 CheckboxGroup 对象,就把复选框对象加入到复选框组中,从而也就生成了单选框对象,语句中第一个和第三个参数的含义同上面复选框对象;
下拉式菜单(Choice)
下拉式菜单对象的生成方式如下:
choice choiObj = new Choice ();
choiObj.add("class1");
choiObj.add("class2");
choiObj.add("class3");
列表(List)
下拉式菜单对象的生成方式如下:
List Lobj = new List (2,false);
Lobj.add("Sun");
Lobj.add("Moon");
- 第一个参数是显示行数,第二个参数表示是否允许多选。
- 第二个和第三个语句用于想在List中添加选项。
布局嵌套(重点知识)
你想你布局不是那么的死板吗?那么你就要学会嵌套布局界面;
代码实现:
this.setLayout(new FlowLayout());//定义一个大的布局(用于包含布局)
Panel p = new Panel();//定义其他的布局(用于包含组件)
p.setLayout(new GridLayout(6,2));//设置6行2列网格布局
this.add(p);//把小布局放在大布局中