Java语言程序设计 工业和信息化普通高等教育“十二五”规划教材 教学课件 作者 相洁 呼克佑 第8章 图形用户界面编程.ppt
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 8.3 简单多媒体技术 【例8-13】使用sun.audio包播放声音文件示例的源代码。 该例播放的声音文件是au格式,是sun.audio包能处理的一种声音格式,实际上并不常用。需要注意的是该包播放过大的声音文件或不支持的格式时会报如下错误: Exception in thread main java.lang.NegativeArraySizeException at sun.audio.AudioStream.getData(Unknown Source) 实际上,au格式适合GUI程序中一些提示声音的场合,如果想播放MP3等格式,建议使用Java媒体框架或第三方媒体库。 8.3 简单多媒体技术 8.3.2 图形 java.awt.Graphics类是Java语言中最基本也是最重要的处理图形的类,包含了大量的图形、文本和图像的操作方法,可以绘制出线、文字、几何形状等图形。编写处理图形、本文、图像的程序时,必须先把该类导入到Java程序中。 Graphics类的使用方法比较特殊,当在屏幕上绘制图形等时,并不需要直接使用new关键字来创建一个该类的对象实例,而是需要一个画板,它在这个画板上直接进行各种各样的画图操作即可,而画板必须是一个实体。所有Java组件都具有一个getGraphics()方法,该方法能返回一个图形对象,这样就可以在所有的Java组件上进行画图操作了。其实每个Java组件(java.awt.Component类及其子孙类的对象)就是前面提到的画板。而在Java小应用程序中,需使用java.awt.Applet类的paint()方法绘图,系统直接将生成好的Graphics对象通过参数形式传给paint()方法,在该方法中使用Graphics对象的引用即可绘图,即可继承Applet类,在该类的paint()方法中直接用系统传递进的Graphics对象引用绘图。当然,该方法对于Java组件也适用,而且绘图过程更简单稳定,如例8-14所示。 8.3 简单多媒体技术 【例8-14】使用paint()方法绘图示例的源代码。 运行结果如图 在上例中自定义的DrawPanel类继承自JPanel类,并重载了paint()方法,在该方法中使用系统传入的Graphics对象g绘制图形。下面是绘制图形时需要注意的几点: (1)绘制图形前需指定图形所用的颜色。 (2) 绘制文字前可指定字体。 (3)绘制图形时应正确使用绘图方法。 图8-17 例8-14的运行界面 8.3 简单多媒体技术 8.3.3 图像 显示图像需要两个步骤:加载图像数据和显示图像。 (1)获取图像数据。 对于Java小应用程序,可用java.applet.Applet类的getImage(URL url, String name)方法装载,返回值是一个Image类对象;对于普通的GUI程序,可以用javax.imageio包中的类处理图像的读写问题,一般来说,可用ImageIO类的read(File file)方法直接装入一个图片文件。其中,getImage()方法中第一个参数为图像文件的URL地址,与8.3.1小节获取音频文件URL地址一样,可用Applet类的getCodeBase()和getDocumentBase()方法通过相对路径获取图像数据,而第二个参数为*.gif和*.jpg的图像文件名字符串;对于ImageIO类的read()方法有4种形式,可以直接传入一个File对象或URL对象等。 另外,Image类封装了图像的信息,并提供获取图像有关信息的方法,以便得到有关图像的属性,如用getHeight(ImageObserver observer)获取图像的高度,用getWidth(ImageObserver observer)获取图像的宽度。 8.3 简单多媒体技术 (2)显示图像 Graphics类的drawImage()方法可用于显示图像,该方法的具体定义如下: drawImage(Image img,int x,int y[,int width,int height] [,Color bgcolor], ImageObserver observer); 其中,img是要显示的图像文件,(x,y)是指定显示位置的左上角坐标,width和 height分别为显示图像区域的宽和高,bgcolor为图像的背景颜色,observer是跟踪图像下载情况的ImageObserver型参数,在调用异步方法
显示全部