AWT图形用户界面.ppt

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
但是,Swing并没有代替AWT。在Java1.1中,AWT事 件处理模型有了根本改变。Swing使用的仍然是Java1.1 的事件处理模型。
AWT在实际的运行过程中是调用所在平台的图形系统,因此同样一段AWT程 序在不同的操作系统平台下运行所看到的图形系统是不一样的。例如在 windows下运行,则显示的窗口是windows风格的窗口;而在UNIX下运行时, 则显示的是UNIX风格的窗口。 Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( lightweight)组件,没有本地代码,不依赖操作系统的支持。
第7章 AWT图形用户 界面
AWT与Swing
Java1.0的出现带来了抽象窗口工具箱(AWT)。设计目 标是希望构建一个通用的GUI,使得利用它编写的程序 能够运行在所有的平台上,以实现Sun公司提出的口号 “一次编写,随处运行”。
在Java1.2中,Sun公司推出了新的用户界面库:Swing。 相对AWT来说,Swing功能更强大、使用更方便,它的 出现使得Java的图形用户界面上了一个台阶。
FlowLayout(流式布局) BorderLayout(边界布局) GridLayout(网格布局) CardLayout(卡片布局) GridBagLayout
7.2.1 FlowLayout 流布局管理器
FlowLayout是最简单的布局管理器,该类是Object类的 直接子类。
将组件加入容器 add(Component comp)
【例7-3】使用FlowLayout布局管理器示例 import java.awt.*; class FlowLayoutTest extends Frame{
public FlowLayoutTest(){ this.setBounds(50,50,200,200); //设置布局管理器为FlowLayout类型 this.setLayout( new FlowLayout() ); for(int i=0;i<5;i++){ this.add ( new Button("Button"+(i+1)) ); } this.setVisible(true);
AWT
抽象窗口工具包AWT (Abstract Window Toolkit) 是 API 为Java 程序提供的建立图形用户界面GUI 工具集
AWT可用于Java的applet和applications中。 它支持图形用户界面编程的功能包括:
用户界面组件; 事件处理模型; 图形和图像工具,包括形状、颜色和字体类;
}
}
【例7-1】Frame中若干重要方法示例 import java.awt.*; public class Test7_1 {
public static void main(String args[]) { MultiFrame f1 = new MultiFrame(50,50,100,100,Color.BLUE); MultiFrame f2 = new MultiFrame(150,50,100,100,Color.YELLOW); MultiFrame f3 = new MultiFrame(50,150,100,100,Color.GREEN); MultiFrame f4 = new MultiFrame(150,150,100,100,Color.MAGENTA);
FlowLayout的布局策略是按照组件的添加次序依次将它
们从左到右放置到容器中。当一行排满之后就转到下一行 继续从左到右排列,且每一行中的组件都居中排列。
FlowLayout是Applet缺省使用的布局策略。
创建布局管理器对象:
public FlowLayout()
居中对齐的,默认的水平和垂直间
public FlowLayoutTest(){ //设置布局管理器为FlowLayout类型 this.setLayout(new FlowLayout()); for(int i=0;i<5;i++){ this.add(new Button("Button"+(i+1))); } pack(); this.setVisible(true);//设置可见
} } public class Test7_3 {
public static void main(String[] args) { new FlowLayoutTest();
} }
【例7-4】使用pack方法让系统管理Frame的大小 import java.awt.*; class FlowLayoutTest extends Frame{
布局管理器,可以进行灵活的窗口布局而与特定窗口的 尺寸和屏幕分辨率无关;
数据传送类,可以通过本地平台的剪贴板来进行剪切和 粘贴。
java.awt包中提供了GUI设计所使用的类和接口。 java.awt包提供了基本的java程序的GUI设计工具。主
要包括下述三个概念:
组件--Component 容器--Container 布局管理器--LayoutMaቤተ መጻሕፍቲ ባይዱager
构造方法
public Frame();
public Frame(String title); 每个Frame的对象实例化以后,都是没有大小和不可见的,
因此必须调用setSize( )来设置大小,调用 setVisible(true)来设置该窗口为可见的。
Frame中比较重要的成员方法 setBounds(int x, int y, int width, int height) 设置窗 体位置和大小,x、y是左上角坐标,width、height 为 宽度和高度。
public class Test
{
public static void main(String args[ ])
{
Frame fr = new Frame("Hello Out There!");
fr.setSize(200,200);
fr.setBackground(Color.red);
fr.setVisible(true);
f.setLayout(null);//设置Frame的布局管理器为null f.setBounds(200,200,300,300); f.setBackground(Color.BLUE);//设置Frame背景色
p.setBounds(50,50,200,200); p.setBackground(Color.CYAN);//设置Panel背景色
组件、容器、布局管理器
Java的图形用户界面的最基本组成部分是组件
组件是一个可以以图形化的方式显示在屏幕上并能与 用户进行交互的对象,例如一个按钮,一个标签等。
基本组件不能独立地显示出来,必须将组件放在一定 的容器中才可以显示出来。
容器本身也是一个组件,具有组件的所有性质,但是它 的主要功能是容纳其它组件和容器。
} } public class Test7_3 {
public static void main(String[] args) { new FlowLayoutTest();
} }
7.2.2 BorderLayout 边框布局管理器
布局策略:提供了5个区域,而每个区域只允许添加一个 组件。
在加入组件的时候,需要指明其加入的位置 BorderLayout.NORTH BorderLayout.SOUTH BorderLayout.WEST BorderLayout.EAST BorderLayout.CENTER
Panel
Panel本身不能独立存在 Panel对象创建后必须使用其容器的add方法,将其加入
某个容器对象(Frame对象) Panel p = new Panel()创建Panel类对象
Applet是Panel类的子类,因此不能独立存在, Applet在运行时要么通过appletviewer查看 器运行,要么需要嵌套在html文档中在Web 浏览器中运行。
隙是5个单位。
public FlowLayout(int align) 具有指定的对齐方式,默认的水平 和垂直间隙是5个单位。
public FlowLayout (int align, 它具有指定的对齐方式以及指定的
int hgap, int vgap)
水平和垂直间隙。
将容器设置为布局管理器
setLayout ( LayoutManager mgr )
setSize(int width, int height) 设置窗体大小。 setLocation(int x, int y) 设置窗体位置。 setVisable(boolean b) 设置窗体是否可见。 setBackGround(Color c) 设置窗体背景颜色。
import java.awt.*;
【例7-2】Panel类使用示例 import java.awt.*; public class Test7_2 {
public static void main(String[] args) { Frame f = new Frame("包含Panel的Frame"); //创建Panel对象,参数null为布局管理器设置 Panel p = new Panel(null);
构造一个具有指定组件间距的边框布局。 水平间距由hgap指定,垂直间距由vgap 指定
将容器设置为布局管理器
将组件加入容器
在向设置为BorderLayout的布局管理策略的容器中添 加组件时,必须指明添加位置,如果未指明,则默认添 加到Center区域,新添加的组件会覆盖原来的组件。 add(Component comp,int index)
布局管理器(LayoutManager):每个容器都有一个 布局管理器,当容器需要对某个组件进行定位或判断其 大小尺寸时,就会调用其对应的布局管理器。
7.1 AWT容器
Container:用来装其他组件 Window:不依赖其他容器,独立存在(一个简单的窗 口框) Frame(窗体):有标题,可调整大小等 Dialog(对话框):可以移动,但不能调整大小 Panel:不能独立存在,需嵌入其他容器 Applet
容器常用方法
add remove setLayout setFont
Frame类
一般我们要生成一个窗口,不直接用到Window类。 用Window的子类Frame来进行实例化。 也可以创建自己的Frame类(要从Frame继承),进行 实例化。
Frame的外观就像我们平常在windows系统下见到的窗 口,有标题、边框、菜单、大小等等。
也可以使用字符串“North”、“South”、“West”、 “East”和“Center”来标明。
BorderLayout是Frame和Dialog的默认布局管理器。
创建布局管理器对象:
public BorderLayout() 构造一个组件之间没有间距的新边框布局
public BorderLayout (int hgap,int vgap)
f.add(p);//将Panel类对象添加到Frame中 f.setVisible(true); } }
7.2 布局管理器
java为了实现跨平台的特性并且获得动态的布局效果, java将容器内的所有组件安排给一个“布局管理器”负责 管理,如:排列顺序,组件的大小、位置,当窗口移动或 调整大小后组件如何变化等功能授权给对应的容器布局管 理器来管理,不同的布局管理器使用不同算法和策略,容 器可以通过选择不同的布局管理器来决定布局。
} } class MultiFrame extends Frame{
static int id = 0; MultiFrame(int x,int y,int w,int h,Color color){
super("Frame " + (++id));//设置Frame的标题 setBackground(color); //设置背景色 setLayout(null);//设置布局管理器为null setBounds(x,y,w,h);//设置Frame窗体位置和大小 setVisible(true);//设置Frame可见 } }
相关文档
最新文档