欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第4图形界面.ppt

    • 资源ID:2604579       资源大小:2.02MB        全文页数:315页
    • 资源格式: PPT        下载积分:20
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要20
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第4图形界面.ppt

    第4章 图形界面,4.1 图形界面的输出 4.2 事件的处理 4.3 图形用户界面设计 4.4 编程实例 实训四 图形用户界面的实现 习题四,4.1 图形界面的输出,4.1.1 案例 前面各章给出的大部分例子都是Java应用程序,通过System.out向标准输出设备输出文本,而Java小程序不能通过此种方法输出信息。Java小程序在浏览器中运行,占据一块矩形的区域,信息的输出必须通过Java语言提供的图形功能画在此矩形区域内。,下面首先给出一个Applet程序,该程序轮流显示三幅广告图片,当用户用鼠标单击该Applet时,浏览器打开当前正在显示的广告对应的网站。图4.1为该程序的运行画面。,图4.1 广告图片显示程序运行画面,【程序4.1】 广告图片显示。 import java.awt.*; import java.awt.event.*; import java.applet.*; import java.net.*; public class Ad extends Applet implements Runnable, MouseListener ,String ImageFile=“sina.gif“,“yahoo.gif“,“163.gif“; String AdUrl=“http:/www.sina.com.cn“,“http:/cn.yahoo.com“, “http:/www.163.com“; Image AdImage=new Image3; int CurAd=0; boolean con=true; public void init() URL codeBase = getCodeBase(); for(int i=0;i3;i+),AdImagei=getImage(codeBase,ImageFilei); /从网站装载图像文件 public void start() Thread t=new Thread(this); addMouseListener(this); t.start(); /启动广告刷新线程 public void paint(Graphics g) ,g.drawImage(AdImageCurAd,0,0,this); public void run() /每隔两秒钟刷新广告显示 while(con) try Thread.sleep(2000); catch(Exception e) CurAd+; CurAd=CurAd%3; repaint(); , public void stop() con=false; / 终止广告刷新线程 removeMouseListener(this); public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseClicked(MouseEvent e), /鼠标单击事件响应程序 try URL theURL=new URL(AdUrlCurAd); getAppletContext().showDocument(theURL,“newwin“); catch(Exception e1) ,程序4.1使用了一个独立的线程用于刷新广告图片的显示,如图4.1所示。有关线程的内容将在第5章介绍,本章主要介绍有关图形界面的内容。,4.1.2 Applet基础 Applet程序在支持Java的Web浏览器中执行,它的结构不同于Java应用程序。每一个Applet都有一个主类,派生于java.applet.Applet。在Applet类中定义了几个重要的方法,在编写Applet时应根据需要覆盖超类中对应的方法。 1Applet的生命周期 与Applet程序生命周期相关的几个重要的方法为初始化init()、开始执行start()、停止执行stop()、退出destroy()、绘画paint(),分别在Applet程序从装入到结束运行整个生命周期中不同的阶段调用。,1) public void init() init方法的作用是初始化Applet。在整个Applet生命周期中,初始化只进行一次。当Web浏览器第一次浏览含有Applet的网页时,浏览器首先下载该Applet字节码文件,然后创建一个该Applet主类的对象,再调用init方法对Applet自身进行初始化。 在init()方法中可设置程序初始状态,载入图形或字体,获取 HTML中 设定的参数等。例如,程序4.1中类Ad的init方法用于从网站下载广告图片。,2) public void start() start方法在Applet启动时被调用。在整个Applet生命周期中,启动可发生多次。当Applet第一次装入并初始化后,或者离开该页面后再次进入时,浏览器都会调用start方法。可以在start方法中通知Applet开始运行,程序4.1在start方法中启动更换广告图片的线程,当离开该页面时,该线程终止运行,再次进入时又启动更换广告图片的线程。,3) public void stop() stop方法用于停止执行Applet。在整个Applet生命周期中,停止执行可发生多次。当浏览器离开Applet所在 Web页或关闭时,浏览器调用stop方法。 stop方法挂起小程序,可在stop方法中释放系统资源,否则当浏览者离开一个页面时,小程序还将继续运行。程序4.1在stop方法中终止更换广告的线程,即当离开该页面时该Applet程序停止工作。,4) public void destroy() destroy方法在Applet退出时被调用。在整个Applet生命周期中,退出只发生一次,即结束对该Web页的访问,关闭Web浏览器时调用一次。 可在destroy方法中编写释放系统资源的代码,但除非用了特殊的资源(如创建的线程),否则一般不需重写destroy()方法,因为Java运行系统本身会自动进行“垃圾”处理和内存管理。,5) public void paint(Graphics g) paint方法负责绘制Applet的显示区域,可多次发生。当需要刷新Applet显示时,自动调用该方法。如果程序中修改了数据,需要刷新显示,可用repaint()方法强制系统调用paint方法重新绘制显示区域。 与前几个方法不同的是,paint中带有一个参数Graphics g,它表明paint方法需要引用一个Graphics类的对象。在Applet中不用编程者操心,浏览器会自动创建Graphics对象并将其传送给paint方法,但应在Applet程序中引入Graphics类: import java.awt.Graphics;,程序4.2演示了Applet的几个重要方法,该程序使用System.out输出部分信息,这部分信息在Applet中无法看到。使用appletviewer调试Applet时,可以通过程序菜单打开Java显示控制台观察到这部分信息。如果使用Visual J+,则可以在output窗口中看到输出结果。下面是某次运行时的输出结果,读者可从中看出上面几个重要方法被调用的顺序。,Now init Now start Now paint Now paint Now stop Now destroy,【程序4.2】 Applet几个重要方法的调用顺序。 /AppletLife.java: import java.awt.*; import java.applet.Applet; public class AppletLife extends Applet public void init() System.out.println(“Now init“); ,public void start() System.out.println(“Now start“); public void stop() System.out.println(“Now stop“); public void paint(Graphics g) ,System.out.println(“Now paint“); g.drawString(“hello“,30,30); public void destroy() System.out.println(“Now destroy“); ,2在HTML中使用Applet Applet使用appletviewer或Web浏览器加载运行,是通过HTML中定义的标记来实现的。第1章程序1.2中的HTML文件使用的是APPLET标记最简单的一种形式,APPLET标记更一般的形式如下:,APPLET标记本身不区分大小写,上面黑体字部分为APPLET标记必须的部分。下面介绍APPLET标记中属性的含义: codebase属性:用于定义Java Applet 字节码文件的路径或地址(URL)。当Applet与HTML文档不在同一目录时用它来定位字节码文件,如果没有该属性,则表示Applet程序的字节码文件和HTML文档放在同一目录。 code属性:用于指定调用的Java Applet 程序字节码文件名,要注意全名和大小写。, archive属性:用逗号分隔的JAR文件列表。若Applet程序由多个类构成,可以将多个class文件打包生成JAR文件,以方便程序的发布。而且JAR文件采用zip压缩算法,可以减少class文件在网络上传输的数据量,加快下载速度。 width和height属性:用于指定Applet程序在Web浏览器中显示区域的宽度和高度,以像素为度量单位。 vspace和hspace属性:用来设置以像素为单位的竖直和水平边距。, align属性:用于控制Applet的对齐方式,取值为left、right、top、texttop、middle、absmiddle、baseline、bottom、absbottom。 name属性:用于为Applet指定一个具体的名字,该名字在与同一页面的不同Applet通信时使用。 alt属性:为不支持Java Applet程序的Web浏览器显示替代的文字,如果支持,则该属性被忽略。,APPLET标记可以在之间使用标记传递参数给applet。例如: ,该APPLET标记定义了两个参数,参数名分别为size与font,两个参数的值分别为5和bold。Applet类提供了方法getParameter,用来获取参数的值。getParameter方法的形式为 public String getParameter(String name) 形式参数name用于指定传递给Applet的参数名。,下面是Visual J+ 6.0生成的Applet程序框架中获取参数的程序片段,请读者注意其中的黑体字部分: private final String labelParam = “label“; private final String backgroundParam = “background“; private final String foregroundParam = “foreground“; /此处省略多行,String labelValue; String backgroundValue; String foregroundValue; labelValue = getParameter(labelParam); backgroundValue = getParameter(backgroundParam); foregroundValue = getParameter(foregroundParam);,对应的HTML文件中APPLET标记如下: ,4.1.3 Java的图形坐标系统 为了将某一图形在屏幕上绘制出来,首先要确定图形的位置,为了解决这个问题就必须有一个精确的图形坐标系统来定位图形。 与大多数其他计算机图形系统所采用的二维坐标系统一样,Java语言的图形系统的坐标原点(0,0)在屏幕的左上角,水平向右为X轴的正方向,竖直向下为Y轴的正方向。每个坐标点的值表示屏幕上的一个像素点的位置,因此,所有坐标点的值都取整数。图4.2表示用此图形坐标系统在屏幕上绘制一个矩形。,图4.2 Java的图形坐标系统,4.1.4 字形和颜色的设置 程序4.2调用Graphics类的drawString方法在屏幕上显示字符串“Hello”,没有指定字体和颜色,drawString使用缺省的字体和颜色输出,输出结果显得很一般。如果希望输出的文本显示更具特色,可以指定某种字体、某种风格、尺寸大小和色彩。,1字体的设置 如果程序需要在屏幕上输出文本信息,首先要确定采用何种字体,例如中文的“宋体”、“楷体”,或是英文的“TimesRoman”、“Courier”等等;接着再决定该字体输出时采用哪种风格,是斜体还是粗体等等;最后还要确定该字体的大小尺寸。所有这些都由Font类来定义,其构造方法的形式为 public Font(String name, int style, int size) 它的三个参数分别代表字体名、字体风格和尺寸大小。,name用于指定文本输出的字体,如果运行该applet的客户端系统未安装该字体,Java会以缺省字体来替代它。客户端系统支持的字体可以用java.awt.Toolkit类中的getFontList()方法来获得,它返回系统目前可用的字体列表,然后就可决定到底选用哪种字体。例如: Toolkit systk = Toolkit.getDefaultToolkit(); String fonts = systk.getFontList();,Font类中已定义了静态常量来表示字体的style值,如Font.BOLD(粗体) 、Font.ITALIC(斜体) 、Font.PLAIN(普通体) ,可以进行相加运算来生成复合style。例如,想让style既是粗体又是斜体,可以这样写: Font fn = new Font(“TimesRoman“, Font.BOLD+Font.ITALIC, 28); 创建了Font对象以后,用Graphics类的setFont()方法即可将所创建的Font对象设为当前所用的字体,setFont的形式为 public void setFont(Font font),设置字体后可以利用Graphics类中提供的drawString()、drawChars()等方法来输出字符串与字符,形式如下: public void drawString(String str, int x, int y) public void drawChars(char data, int offset,int length, int x, int y) drawString方法中的参数str为要显示的字符串,x,y用于指明字符串显示的起始位置坐标,其中x表示第一个字符的左边界,y表示整个字符串的基线(baseline,见图4.3) 位置。,图4.3 字符串输出的坐标示意图,drawChars方法则用来显示多个字符,从给定的字符数组中抽取连续的一部分显示在屏幕上。其中data参数就是给定的字符数组,offset表示从第几个字符位置开始,length表示共显示几个字符,x与y参数的含义与drawString方法一样。 程序4.3显示了一些不同的文本字体,其显示结果如图4.4所示。,图4.4 程序4.3的输出结果,【程序4.3】 用指定的字体输出文本。 import java.awt.Graphics; import java.awt.Font; public class FontDemo extends java.applet.Applet public void paint(Graphics g) Font ftp20 = new Font(“TimesRoman“,Font.PLAIN,20); Font fai15 = new Font(“Arial“,Font.ITALIC,15); Font fcb24 = new Font(“Courier“,Font.BOLD,24); Font fsib30 = new Font(“宋体“,Font.ITALIC+Font.BOLD,30);,g.setFont(ftp20); g.drawString(“Font name TimesRoman , style plain , size 20“,10,20); g.setFont(fai15); g.drawString(“Font name Arial , style italic , size 15“,10,50); g.setFont(fcb24); g.drawString(“Font name Courier , style bold , size 24“,10,80); g.setFont(fsib30); g.drawString(“字体名 宋体,风格 斜体+粗体,尺寸 30“,10,120); ,系统当前所用的字体信息可以用Graphics类中的getFont()方法获得,该方法无参数,它返回系统当前所用的Font对象,然后就可以调用Font类中提供的几个方法来获取该字体的基本信息。表4.1列出了Font类中的这些方法,表中只给出了方法名。,表4.1 Font类提供的一些主要方法,2颜色的设置 与设置字体信息相似,要设置新的颜色,必须先创建Color对象,然后再调用Graphics类中设置颜色的方法来将该Color对象设为当前所用的绘图颜色。 Java中每一种颜色都看成是由红(R) 、绿(G) 、蓝(B) 三原色组合而成的,因此Color类的构造方法形式如下: Color(int r, int g, int b),其中,每个参数的值都在0255之间,数值越大就表明这种颜色的成分越重。例如(0,0,0)代表黑色,(255,0,0) 代表红色。若客户端系统不支持当前所定义的颜色值,Java会挑选最接近的颜色来代替。 Color类中定义了一些标准颜色的Color对象,使得这些标准颜色的引用显得更为方便。这些类变量如表4.2所示。,表4.2 标准的Color对象,创建了Color对象后,还需调用Graphics类中的setColor方法把这个对象设置为系统当前所用的绘画颜色,调用格式为 setColor(Color c) 例如,想要用蓝色来显示文本,最简单的办法是直接引用标准色的类变量: setColor(Color.blue);,另外,Java还提供了设置整个applet的背景和前景的方法,它们分别是setBackground方法和setForeground方法。它们都被定义在java.awt.Component类中,因此该方法能被其子类(包括Applet类及Applet类的子类) 继承,它们的调用格式与setColor()方法一样: setBackground(Color c) setForeground(Color c),其中,setForeground()方法将影响到Applet中所有已经用其他任何颜色所绘制的图形及显示的文本,把它们全都变为该方法所定义的前景颜色,而无需重新一一绘制。 与字体类似,Java也提供了getColor方法(Graphics类中)、getBackground方法和getForeground方法(Component类中) 来分别获取当前的绘图颜色、Applet背景及前景颜色的对象。 程序4.4显示了若干行用随机定义的颜色输出的文本。,【程序4.4】 用指定的颜色输出文本。 import java.awt.Graphics; import java.awt.Color; public class ColorDemo extends java.applet.Applet public void paint(Graphics g) int red,green,blue; for (int i=10;i200;i+=15) red=(int)Math.floor(Math.random()*256); green=(int)Math.floor(Math.random()*256);,blue=(int)Math.floor(Math.random()*256); g.setColor(new Color(red,green,blue); g.drawString(“Color“,1,i); ,4.1.5 图形图像的输出 Graphics类提供了丰富的绘图方法,利用这些方法可以绘制各种图形和文本。下面介绍一些基本图形的绘制方法。 1画线和点 Graphics类中提供画线功能的是drawLine()方法,其调用格式如下: drawLine(int x1,int y1,int x2,int y2) 该方法需要设置四个参数,其中x1,y1表示线段的一个坐标点,x2,y2表示线段的另一个坐标点。程序4.5画出两条线段,其显示结果如图4.5所示。,图4.5 画线方法演示,【程序4.5】 画线方法演示。 /ch4_2 LineDemo.java import java.applet.Applet; import java.awt.Graphics; public class LineDemo extends java.applet.Applet public void paint(Graphics g) g.drawLine(0,0,70,70); g.drawLine(0,70,70,0); ,2矩形 Graphics类提供了三种类型的矩形,分别为普通矩形、圆角矩形和立体矩形。每一种矩形都提供两种不同风格的方法:一种是仅画出矩形的边框;另一种是不仅画出边框,还用相同的颜色填充整个矩形区域。 绘制普通矩形时调用drawRect或fillRect方法,格式如下: drawRect(int x, int y, int width, int height) /边框型风格 fillRect(int x, int y, int width, int height) /填充型风格,其中,前两个参数表示矩形左上角的x坐标和y坐标,后两个参数分别表示矩形的宽度和高度。下面的paint()方法画出了两个矩形: public void paint(Graphics g) g.drawRect(40,20,60,40); g.fillRect(120,20,60,40); ,圆角矩形的四个顶角呈圆弧状,每个圆弧都是由四分之一的椭圆弧所构成。画圆角矩形的两个方法的调用格式如下: drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 它们除了具有和普通矩形含义相同的前四个参数外,还多了两个用来描述圆角性质的参数。其中,arcWidth代表了圆角弧的横向直径;arcHeight代表了圆角弧的纵向直径。,下面的paint()方法画出三个圆角矩形,显示效果如图4.6所示。可以看出,随着arcWidth和arcHeight值的增大,矩形的圆角就越圆。 public void paint(Graphics g) g.drawRoundRect(20,20,80,60,20,20); g.fillRoundRect(120,20,80,60,40,30); g.drawRoundRect(220,20,80,60,60,40); ,图4.6 圆角矩形,Java中的立体矩形其实并非真正的三维图形,只是在矩形的边框上增加一点阴影,使矩形看上去相对平面好像有凸出或凹下的效果。绘制方法为: draw3DRect(int x, int y, int width, int height, boolean raised) fill3DRect(int x, int y, int width, int height, boolean raised) 这两个方法中的前四个参数与drawRect方法中所用的参数含义是一样的,第五个参数raised用于定义该立体矩形是具有凸出(值为true) 还是凹下(值为false) 的效果。,下面的paint方法分别画了一个凸出的和一个凹下的矩形,效果如图4.7所示,凸出凹下的效果不是很明显。 public void paint(Graphics g) g.setColor(Color.white); g.draw3DRect(20,20,80,60,true); g.fill3DRect(120,20,80,60,false); ,图4.7 立体矩形,3多边形 多边形的绘制方法通常是给出一组坐标点,再用直线段将这些点依次连接起来。Graphics类中提供了两个方法来画多边形,一个是边框型drawPolygon方法,另一个是填充型fillPolygon方法,每一种方法都有两种不同的参数类型。 第一种参数类型的调用格式为: drawPolygon(int xPoints,int yPoints,int nPoints) fillPolygon(int xPoints,int yPoints,int nPoints),其中,xPoints参数是一个整数数组,用于存放多边形坐标点的X坐标值,yPoints参数存放相应的一组Y坐标值,nPoints则表示共有几个坐标点。例如,下面的paint方法分别画了一个边框型和一个填充型的多边形,显示效果如图4.8所示。,图4.8 多边形绘制,public void paint(Graphics g) int Poly1_x=30,63,115,72,67; int Poly1_y=40,20,95,74,106; int Poly1_pts=Poly1_x.length; int Poly2_x=180,213,265,222,217; int Poly2_y=40,20,95,74,106; int Poly2_pts=Poly2_x.length; g.drawPolygon(Poly1_x,Poly1_y, Poly1_pts); g.fillPolygon(Poly2_x,Poly2_y, Poly2_pts); ,第二种参数传递形式为: drawPolygon(Polygon p) fillPolygon(Polygon p) 其中,Polygon是定义在java.awt中的一个类,它的构造方法有两种不同的参数传递形式,一种与drawPolygon()方法的第一种调用格式一样: Polygon(int xPoints,int yPoints,int nPoints) 另一种调用格式则是创建一个空的多边形(无参数) : Polygon(),Polygon类中提供了一系列特有的方法,可以方便地进行与多边形相关的操作。例如,addPoint()方法可将多边形的坐标点动态地增加到Polygon对象中。下面列出的paint()方法所执行的结果与图4.8所示的结果是一样的。,public void paint(Graphics g) int Poly1_x=30,63,115,72,67; int Poly1_y=40,20,95,74,106; int Poly1_pts=Poly1_x.length; Polygon poly1= new Polygon(Poly1_x,Poly1_y, Poly1_pts); Polygon poly2= new Polygon(); poly2.addPoint(180,40);,poly2.addPoint(213,20); poly2.addPoint(265,95); poly2.addPoint(222,74); poly2.addPoint(217,106); g.drawPolygon(poly1); g.fillPolygon(poly2); ,4椭圆和圆 绘制椭圆的方法是给出该椭圆的外接矩形作为参数,其调用格式与画普通矩形的方法相似: drawOval(int x, int y, int width, int height) /边框型风格 fillOval(int x, int y, int width, int height) /填充型风格 特别要注意的是:x和y不是椭圆的圆心坐标,而是该椭圆外接矩形的左上角。因此,画椭圆时,先把它看作是一个矩形将有助于在坐标系统中定位。,Graphics类不专门提供画圆的方法,只要在绘制椭圆时将width与height参数置成相等就可以了。下面的paint方法绘制了一个圆和一个用颜色填充的椭圆。 public void paint(Graphics g) g.drawOval(30,20,60,60); g.fillOval(130,20,80,60); ,5画弧 弧是椭圆的一部分,画弧的方法就相当于先画一个椭圆,而后取该椭圆中所需要的一部分。它们的调用格式如下: drawArc(int x, int y, int width, int height,int startAngle, int arcAngle) /边框型风格 fillArc(int x, int y, int width, int height,int startAngle, int arcAngle) /填充型风格,其中,前四个参数的含义与画椭圆一样。后两个参数就是用来定义椭圆的一部分:startAngle参数表示该弧从什么角度开始,arcAngle参数表示从startAngle开始转了多少度。水平向右表示0°,逆时钟方向为正角度值,顺时钟方向为负角度值。 如果startAngle和arcAngle中有任一值大于360°的话,都会被转换为0360°之间的数值。另外fillArc()方法的效果并不是填充弧的两个端点直接连线所围的区域,而是填充弧的两端点与圆心连线所围的扇形区域,像一个饼图。下面的paint方法画了几段弧,显示效果如图4.9所示。,public void paint(Graphics g) g.drawArc(10,20,100,60,35,65); g.drawArc(110,20,100,60,35,-140); g.fillArc(210,20,100,60,35,65); g.fillArc(310,20,100,60,35,-140); ,图4.9 弧形的绘制,6复制与清除图形 当需要重复绘制一些相同的图形时,也可采用Graphics类中的copyArea方法,它能将屏幕上某一矩形区域里的内容复制到屏幕的另一区域。其调用格式如下: copyArea(int x, int y, int width, int height, int dx, int dy) 其中,前四个参数定义了要被复制的屏幕的矩形区域。最后两个参数则表示新区域与原始屏幕区域的偏移距离:若dx,dy为正值,则表示新区域相对于原区域的右方及下方所偏移的像素值;反之,它们取负值则分别表示新区域相对左方及上方的偏移量。,若要清除屏幕的某一矩形区域所画的内容,可用clearRect方法,它用当前的背景颜色来填充整个矩形区域。其格式为 clearRect(int x, int y, int width, int height) 其中,四个参数定义了所要清除的矩形区域。例如,想要清除整个Applet区域,可先调用Applet类的size()方法得到整个Applet的宽度和高度(该方法没有参数,返回值是一个Dimension对象) ,再调用clearRect()方法就可以了。例如: g.clearRect(0, 0, size().width, size().height);,7图像的输出 Graphics类提供了不少绘制图形的方法,但如果用它们在Applet运行过程中实时地绘制一幅较复杂的图形并不容易。对于复杂图形,一般事先用专用的绘图软件绘制好,或者是用其他截取图像的工具(如扫描仪) 获取图像的数据信息,按一定的格式存入图像文件。Applet运行时,只需从指定位置将图像文件装载到内存里,然后在适当的时机将它显示出来,4.1节的案例中的广告图像就是采取此方法处理的。,Java目前所支持的图像文件格式有两种,分别是GIF和JPEG格式(带有.GIF、.JPG、.JPEG后缀名的文件) 。如果是其他格式的图像文件,可用图像处理软件先将它们转换为这两种格式。 Applet类提供了getImage方法,用来将准备好的图像文件装载到Applet中,该方法的参数指明图像文件所存储的位置。由于Java语言是面向网络应用的,大部分情况是直接存取网络中Web服务器上的图像文件,因此Java采用URL(Universal Resource Location,统一资源定位器) 来定位图像文件的网络位置,定义了URL类来管理URL信息(有关URL类的详细内容请参考第8章) 。,getImage方法有两种调用格式: Image getImage(URL url) Image getImage(URL url, String name) 第一种格式使用绝对URL形式,它指明了网络资源的全路径名,例如: http:/www.xyz.com/java/imgsample/images/m1.gif 第二种格式使用相对URL形式,由基准URL(base URL) 再加上相对于基准URL下的相对URL两部分组成,例如上面的例子可表示为基准URL: http:/www.xyz.com/java/imgsample/ 与相对URL:images/m1.gif两部分。,如果从当前Applet所在的网站装载图像文件,通常无需特意创建URL对象,可使用Applet类提供的两个方法来获取基准URL对象,然后给出图像文件的相对路径就可以了。这两个方法是: URL getDocumentBase() URL getCodeBase() getDocumentBase()方法返回的基准URL对象代表了包含该Applet的HTML文件所处的目录,例如该文件存储在“http:/www.xyz.com/java/imgsample/m1.html”中,则该方法就返回“http:/www.xyz.com/java/imgsample/”路径。,getCodeBase()方法返回的基准URL对象代表了该applet文件(.class文件)所处的目录。它是根据HTML文件的APPLET标记中的codebase属性值计算出来的,若该属性没被设置,则同样返回该HTML文件所处的目录。本节案例程序中的init方法中就采取了此种方法:,public void init() URL codeBase = getCodeBase(); /获取基准URL for(int i=0;i3;i+) AdImagei=getImage(codeBase,ImageFilei); /

    注意事项

    本文(第4图形界面.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开