1 / 28

第八章 Applet 与图形用户界面

第八章 Applet 与图形用户界面. Application 和 Applet 是 Java 程序的两种基本形式,本章介绍 Java Applet 的基本工作原理和编程技术,简单讨论 Java 程序图形用户界面的设计和实现. WWW 工作原理. 发出请求. 包含 browser 的用户端. server 端. 发回网页. 静态网页的工作原理. 接受请求. 服务器端. 找到静态网页. 发送网页. Applet 的基本工作原理.

Download Presentation

第八章 Applet 与图形用户界面

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章 Applet与图形用户界面 • Application和Applet是Java程序的两种基本形式,本章介绍Java Applet的基本工作原理和编程技术,简单讨论Java程序图形用户界面的设计和实现

  2. WWW工作原理 发出请求 包含browser的用户端 server端 发回网页

  3. 静态网页的工作原理 接受请求 服务器端 找到静态网页 发送网页

  4. Applet的基本工作原理 • Applet是特殊的Java程序,它不需要专门的解释器来执行它,相对于Java Appliction的解释器,如JDK的java.exe,VJ++的jview.exe,Java Applet的解释器就是Internet的浏览器,确切地讲就是兼容Java的Internet浏览器。

  5. Applet的工作原理: • 1,.class和HTML保存在服务器 • 2,当浏览器向服务器请求下载嵌入了Applet的HTML文件时。 • 3,下载到客户端后,由浏览器解释HTML中的各种标记并显示在用户屏幕上,当浏览器遇到HTML文件中的一个特殊标记时,表明嵌有Applet程序,浏览器会根据Applet名字和位置把其字节码文件从WWW服务器上下载到本地。 • 4,利用浏览器本身拥有的Java解释器执行该字节码。

  6. 8.2 Applet类的使用 • Java Applet程序必须有一个主类,其父类是系统的Applet类,正是通过这个类才能完成Applet程序与浏览器的配合 • 1、Applet类 • 存在于java.applet包中,从继承结构上说属于用户图形界面的java.awt包,是系统类java.awt.Panel的子类,由于Applet类的特殊,系统专门为它建立了一个java.applet包

  7. Applet类是Panel的子类(可查看源码验证) • Panel类的作用: • (1)包容和排列其他的界面元素,如按钮、对话框等; • (2)响应它所包容范围之内的事件,或把事件向更高层次传递。 • Applet类的作用: • Applet在继承上述作用的基础上,还具有一些与浏览器和Applet 生命周期有关的专门方法

  8. Applet类的主要方法 • 实际运行中,浏览器在下载字节码的同时,自动创建一个用户Applet子类的实例(对象) • 完成初始化操作的init()方法 • Applet的字节码文件从WWW服务器下载后,浏览器将自动创建一个Applet类的实例并调用它从Applet类那里继承来的init()方法。用户程序可以重载父类的init()方法,定义一些必要的初始化操作。

  9. 启动浏览器运行Applet的start()方法 • Start()方法在init()初始化之后被自动调用,或者是Applet被重新启动时被系统自动调用。也就是说,当包含Applet的HTML页面被重新加载时,Applet实例就会被重新启动并调用start()方法,但是init()方法只被调用一次

  10. 显示Applet界面的paint()方法 • paint()方法的主要作用是在Applet的界面中显示文字、图形和其他界面元素。导致调用paint()方法的事件主要有三种: • 1、Applet被启动之后 • 2、Applet 所在的浏览器窗口改变,包括大小、移动、被遮挡、重新显示等。 • 3、Applet的其他相关方法被调用,如repaint() • paint()方法有一个固定的参数----Graphics类的对象g。

  11. 暂停Applet前执行的stop()方法 • stop()方法类似于start()方法的逆操作,当用户暂停Applet之前,浏览器将首先自动调用stop()方法(例如用户转去查看其它网页)。用户可以重载Applet类的stop()方法。 • 消灭Applet之前执行的destroy()方法 • 当用户退出浏览器时,浏览器会自动调用此方法来完成一些释放资源、关闭连接之类的操作。

  12. 8.3 Applet与HTML文件的配合 • 在HTML中嵌入Applet的标记为 • <applet 参数> </applet> 例如: • <applet code= "Demo.class" width= "500" height= "300"> • </applet> • 此标记至少需包括三个参数: • Code: 指明Applet字节码文件名 • Height: 指明Applet界面占据的区域的高度,以像素为单位 • Width: 指明宽度,以像素为单位

  13. 其他可选的参数: • Codebase:当Applet文件与HTML文档不在同一目录时, 使用codebase来指明字节码文件的位置,这个位置使用URL格式 • Alt: 当浏览器因某种原因不能执行字节码文件时,就把alt参数指明的信息显示给用户 • align:表示Applet界面区域在浏览器窗口中的对齐情况 • *这些参数都应该包含在<applet>标记的右半尖括号的内部

  14. 向applet传递参数 • 通过HTML文件的<param>标记,applet可以从中获得所要的参数,使用方法为: • <applet ……..> • <param name=参数名 value= 参数值 > • …… • </applet>

  15. 在Applet中利用getParameter()方法来获取HTML传递来的参数,这个方法有一个字符串参数,表明它所希望获取的HTML参数的名字(即name指定的参数名),方法的返回值是一个字符串对象,即HTML中value指定的字符串。如果用户希望这个参数是其他类型,则要进行参数类型的转换在Applet中利用getParameter()方法来获取HTML传递来的参数,这个方法有一个字符串参数,表明它所希望获取的HTML参数的名字(即name指定的参数名),方法的返回值是一个字符串对象,即HTML中value指定的字符串。如果用户希望这个参数是其他类型,则要进行参数类型的转换 • (见例8_3)

  16. 8.4 java图形用户界面概述 • 图形用户界面(GUI)的重要性:美观、易用、统一 • 为方便用户界面的开发,设计了专门的类库来生成各种标准图形界面元素,和处理图形界面的各种事件,这个类库就是java.awt包。AWT是abstract windows toolkit(抽象窗口工具集)的缩写。AWT类库中的各种操作被定义成在一个并不存在的“抽象窗口”中进行,使得开发人员所设计的界面独立于具体的界面实现,可以适用于所有的平台。

  17. JFC(Java基本类 ),包含Swing构件 ,Swing是以AWT为基础的。 • 另外,还有IBM公司Eclipse项目里的SWT。 • AWT、Swing、SWT三者的联系与比较?

  18. 构成图形界面的元素和成分可分为三类: • 容器:用来组织其它界面成分和元素的单元(如窗口)。容器内包含的成分和元素可能又是一个容器(层层相套) • 控制组件:是图形用户界面的最小单位之一,它里面不再包含其他的成分。目前常用的控制组件有: • 选择类的:复选框Checkbox、单选按钮CheckboxGroup,下拉列表List; • 文字处理类的:文本框TextField、文本区域TextArea; • 命令类的:按钮Button、菜单Menu等。 • 用户自定义成分:它不能被系统识别和承认,通常只能起到装饰、美化作用,而不能响应用户的动作,也不具有交互功能。

  19. 8.6 Java的事件处理 •     Java将图形界面的所有事件进行分门别类(鼠标、键盘及图形界面标准元素的改变分别对应不同事件)组成不同的事件类

  20. 8.6.1 JDK1.02 事件处理机制 • 1.事件的产生 • 事件是系统对其可能处于的某种状态或某种操作的预先定义。 • Java用Event类的对象来保存和表示事件。 • 当用户在程序的运行过程中引发了一个系统可识别的事件时,事件将自动创建一个Event类的对象来表示这个事件,并在这个对象中保存该事件的相关信息。 • 注:Event的实例是产生事件时系统自动创建的,不需要也不允许用户程序调用构造函数和new运算符来创建Event对象。

  21. Event对象中的变量 • Public long when:表示事件发生的时间,一般为系统内部安排事件处理排队用。 • Public int id:表示事件的类型,包括: • WINDOW_DESTROY • WINDOW_MOVED • KEY_PRESS • KEY_RELEASE • MOUSE_DOWN • MOUSE_UP • MOUSE_MOVE • MOUSE_ENTER • MOUSE_EXIT • MOUSE_DRAG • SAVE_FILE • GOT_FOCUS等等

  22. 事件的响应和处理 • 系统为每一个用户事件创建了一个Event对象之后,把这个对象发送给AWT构件来处理。所有AWT构件的祖先是java.awt类库中的Component类,它定义了下面这些方法: • public boolean handleEvent(Event evt) • 定义为可以处理所有类型的事件。系统调用该方法时把需要它处理的事件Event对象evt作为参数传递给它,若此事件得到妥善处理,则方法返回true,否则返回false,表示还需要另一个AWT构件继续处理此事件。

  23. public boolean handleEvent(Event e){//重载处理事件的方法 • if(e.id==Event.WINDOW_DESTROY){//用户点击窗口的关闭 • dispose();//关闭窗口 • System.exit(0);//退出整个程序 • } • return super.handleEvent(e);//使用原事件分配体系处理 • }

  24. public boolean action(Event evt,Object what) • 处理所有用户产生的事件,通常当一个事件发生时,系统首先调用handleEvent()方法,如果用户没有重载及改变类库中原有的handleEvent()方法,则这个方法将会自动调用action()方法。 • public boolean mouseDown(Event evt,int x,int y) • public boolean keyUp(Event evt,int key)

  25. 用户(开发人员)的主要工作 • 上述方法可以被系统自动调用,所以编程人员的主要任务是在不同的AWT构件中根据程序的需要覆盖并重写这些方法,使它们按照用户的需要来处理不同的事件。

  26. 事件处理顺序 • 1,先由处理常用事件的方法,如mouseDown(),keyUp()等来处理。 • 2,再由action(),handleEvent()来处理没有对应处理方法的其他事件。 • 3,若当前AWT构件不能处理发生在其中的事件,则通过事件处理方法的返回值false,将事件传递给其父对象处理。

  27. 8.8 GUI标准组件概述 • 构建程序的图形用户界面的主要任务有两个: • 创建各界面组件并排列成图形用户界面的外观; • 定义这些组件对不同事件的响应从而完成图形用户界面(交互)功能。 • GUI标准组件都是java.awt.*包中的根类Component类的子类,它的直接子类包括一个容器组件Container 和八个基本组件(Button,Label,Choice,TextComponent等)。Container是所有容器类的根类

  28. AWT Sample application • JFC Sample application

More Related