140 likes | 340 Views
北京航空航天大学出版社. Java 程序设计. 主讲教师:孙修东 联系方式: sunxdj@shafc.edu.cn. 目 录. 任务一 搭建环境(构建 Java 集成开发环境). 任务二 Java 欢迎你(开发简单 Java 应用程序. 任务三 小试牛刀(学习Java语言基础). 任务四 挑战选择(使用分支控制流程). 任务五 游戏人生(使用循环控制流程). 任务六 回归自然(创建、使用类和对象). 任务七 3G时代的消息传递 ( 定义和使用类方法 ). 任务八 保护你的隐私(封装的使用).
E N D
北京航空航天大学出版社 Java程序设计 主讲教师:孙修东 联系方式:sunxdj@shafc.edu.cn
目 录 • 任务一 搭建环境(构建Java集成开发环境) • 任务二 Java欢迎你(开发简单Java应用程序 • 任务三 小试牛刀(学习Java语言基础) • 任务四 挑战选择(使用分支控制流程) • 任务五 游戏人生(使用循环控制流程) • 任务六 回归自然(创建、使用类和对象) • 任务七 3G时代的消息传递(定义和使用类方法) • 任务八 保护你的隐私(封装的使用) • 任务九 子承父业(继承和多态的使用) • 任务十 上帝万能之手(接口的使用) 2/14
目 录 • 任务十一 用数组存储信息(使用数组) • 任务十二 使用字符串进行交流(使用字符串) • 任务十三 防患于未然(捕获并处理异常) • 任务十四 主动出击(抛出异常) • 任务十五 认识Java Applet(Applet入门) • 任务十六 丰富多彩的Applet(在Applet中播放声音和显示图像) • 任务十七 进入Windows世界(设计图形用户界面) • 任务十八 布局规划(使用布局管理器) • 任务十九 事件委托处理(如何处理事件) • 任务二十 选择之道(使用选择控件和选择事件) 3/14
目 录 • 任务二十一 简明清晰的菜单(使用菜单和其他常用事件) • 任务二十二 访问数据(使用JDBC连接数据库) • 任务二十三 访问数据升级(数据库编程) • 任务二十四 文件管理(目录与文件管理) • 任务二十五 顺序进出之道(文件的顺序访问) • 任务二十六 随机进出之道(文件的随机访问) • 任务二十七 JAVA的分身术(创建和启动线程) • 任务二十八 线程的生命周期与优先级(线程的状态与调度) • 任务二十九 基于连接的通信(Java中的套接字Socket) • 任务三十 基于无连接的通信(Java中的数据报编程) 4/14
任务十六 丰富多彩的Applet(在Applet中播放声音和显示图像) 1 知识目标 AudioClip类;Image类。 2 能力目标 会使用AudioClip类在Applet中实现声音的播放;会使用Image类在Applet中显示图像。 5/14
内容提要 1 跟我做:会唱歌的图片 2 实现方案 3 代码分析 4 必备知识 5 动手做一做 6/14
16.1 跟我做:会唱歌的图片 • 任务情景 • 编写一个Java Applet程序AudioImage,运行程序时显示一张图像并循环播放一个声音文件。 • 运行结果 第1章目录 7/14
16.2 实现方案 • 解决步骤 • 步骤一:按照Applet程序的框架编写程序代码。 • 1.打开Eclipse,在study项目中创建包com.task16,再确定类名AudioImage,得到类的框架。 • 2.使用imports关键字加载其它包:ava.applet.*、java.awt.*和javax.swing.*。 • 3.按照Applet程序框架,在public class AudioImage后添加extends JApple语句 • 4.在下面一行输入定义AudioClip类和Image类的对象。 • AudioClip audio; • Image imgDisplay; • 5.在AudioImage类中输入两个方法的定义: • ⑴在int()方法中使用Image类的getImage方法将图像文件和Image对象联系起来,使用getAudioClip方法加载声音文件; • ⑵在paint()方法中使用Graphics类的drawImage方法显示Image对象,使用AudioClip对象的loop方法循环播放声音文件。 • 步骤二:编写AudioImage.html文件,使用Applet相关标记将Applet程序嵌入到HTML文件中。 • 步骤三:使用AppletViewer工具查看嵌入了Applet程序的HTML文件,或直接用Web打开HTML文件,运行Applet程序。 第1章目录 8/14
16.3 代码分析 • 程序代码 • Applet源文件代码: • /* • * AudioImage.java • * 任务十六 • * 会唱歌的图片 • */ • import java.awt.*; • import java.applet.*; • import javax.swing.*; • public class AudioImage extends JApplet{ • AudioClip audio; //定义类型为AudioClip的成员变量 • Image imgDisplay; //定义类型为Image的成员变量 • public void init(){ • imgDisplay=getImage(getCodeBase(),"1.jpg"); //装载图像 • audio=getAudioClip(getCodeBase(),"sample.mid"); • } 第1章目录 9/14
16.3 代码分析 • public void paint(Graphics g) { • g.drawString("Applet中播放声音和显示图像",30,30); //显示文本 • audio.loop(); • g.drawImage(imgDisplay,30,40,this); //显示图像 • } • } • 嵌入Applet的HTML文件代码:AudioImage.html • <applet code ="AudioImage.class" width=200 height=180> • </applet> 第1章目录 10/14
16.3 代码分析 • 应用扩展 • Applet中播放的声音和显示的图像也可以作为参数由HTML传递。若用HTML传递声音和图像的文件名参数,上述代码部分修改如下: • public class AudioImage2 extends JApplet{ • private String MyI,MyA; • AudioClip audio; //定义类型为AudioClip的成员变量 • Image imgDisplay; //定义类型为Image的成员变量 • public void init() { • MyI=getParameter("myImage"); • MyA=getParameter("myAudio"); • imgDisplay=getImage(getCodeBase(),MyI); //装载图像 • audio=getAudioClip(getCodeBase(),MyA); • } • ……(与“程序代码”一节中paint方法的代码相同) • } 11/14
16.4 必备知识 • 16.4.1 Applet中的声音处理 • Java可以支持的声音文件包括.wav、midi和.mp3,在Applet中处理声音文件可以先载入再播放。使用java.applet.Applet类中所定义的getAudioClip()方法可以载入一个声音文件,当声音文件被载入后,则可以使用相关方法对其进行操作,这些方法包括:play(),loop()或者stop()。 • 使用java.applet.AudioClip 类中的Play()方法可以播放一个己被载入的声音文件;loop()方法可以循环播放一个己被载入的声音文件;stop()方法可以停止播放声音文件。 • 16.4.2 Applet中的图像处理 • 目前Java所能处理的图像格式包括GIF和JPEG两种。Java把图像当做Image对象处理,先载入再显示。Applet装载图像时需要首先定义Image对象,格式为: • Image myImage; • 再使用getImage方法把图像文件和Image对象联系起来,其方法定义为: • myImage=getImage(URL url);或 • myImage=getImage(URL url,String name); 第1章目录 12/14
16.4 必备知识 • 第一种方式需指明图像文件的绝对URL地址。第二种方式有两个参数:第一个参数指明图像文件的基地址,可以通过对getCodeBase方法的调用返回Applet的URL地址,如www.sun.com/Applet,如果图像与包含Applet的HTML文件在同一目录下,还可以用getDocumentBase()获得Applet主页的基地址;第二个参数指定从URL装入的图像文件名。当Applet与图像文件处于同一目录下时,只需要图像的文件名;当图像文件位于Applet之下的某个子目录,图像文件名中则应包括相应的目录路径。例如:myImage=getImage(getCodeBase(),"image1.jpg"),myImage=getImage(getCodeBase(),"image/image2.jpg")。 • 用getImage方法把图像装入后,Applet便可用Graphics类的drawImage方法显示图像,格式如下: • g.drawImage(myImage,x,y,this); • 参数指明了待显示的图像、图像左上角的x坐标和y坐标以及this。编译之后运行Applet时,图像并非瞬间显示,这是由于程序不是在drawImage方法返回之前把图像完整地装入并显示的。drawImage方法创建了一个线程,该线程与Applet的原有执行线程并发执行,使图像边装入边显示,从而产生了不连续现象。为了提高图像显示效果,许多Applet都采用图像双缓冲技术,即先把图像完整地装入内存然后再显示在屏幕上。Applet还可以通过imageUpdate方法测定一幅图像已经装了多少在内存中。 第1章目录 13/14
16.5 动手做一做 • 一、实训目的 • 掌握在Applet中加入声音的方法;掌握在Applet中显示图片的方法。 • 二、实训内容 • 编写一个显示图像和播放声音的 Java Applet程序myAI,并编写对应的HTML代码。要求显示四张图片,并且声音文件播放一次。程序运行的结果如图16-2。 • 三、简要提示 • 通过继承JApplet类创建myAI类,定义类型为AudioClip和Image的成员变量,实现init()和paint()方法。可在init()方法中通过AudioClip类的getAudioClip方法加载声音,通过Image类的getImage方法加载图像。在paint()方法中显示图像和播放声音。 • 四、程序代码 • 参见本教材教学资源。 • 五、实训思考 • 1.如果通过对getDocumentBase()方法的调用返回Applet的URL地址,应该怎样修改程序? • 2.Applet类的play()方法与loop()方法播放声音的效果有何区别? 14/14