项目八 显示时钟
1 项目介绍 用浏览器显示一个时、分、秒指针随时间不断变化 的时钟,在小应用程序查看器中运行
9.2 Graphics2D类 Java 2D拥有强大的二维图形处理能力,这些功能 主要是由Graphics2D类来完成的,该类是 Graphics类的一个子类。它的特点是把所绘的 图形当成一个对象来处理,绘制前先创建对象。 9.2.1绘制2D直线 调用格式:先创建2D线形对象:Line2D line=new Line2D.Double(double x1,double y1,double x2,double y2); 然后再绘制2D直线line。 作用:绘制一条二维直线。 参数说明:x1,y1——二维直线的起始坐标;x2,y2——二维 直线的终点坐标。 举例如下:
例9. 15 import java. awt. ; import java. applet. ; import java. awt 例9.15 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_line extends Applet { public void paint(Graphics g) { Graphics2D d2; d2=(Graphics2D)g;//转换d为2D对象 d2.setColor(Color.red); Line2D line=new Line2D.Double(100,10,100,300);//创建line对象 d2.draw(line);//画出2D直线 d2.setColor(Color.blue); Line2D line1=new Line2D.Double(0,300,100,300);//创建line对象 d2.draw(line1);//画出2D直线 } 运行效果如下:
9.2.2 绘制2D矩形 调用格式:先创建2D矩形对象:Rectangle2D rect=new Rectangle2D.Double(double x1,double y1,double width,double height); 然后再绘制2D矩形。 作用:绘制一个2D矩形。 参数说明:x1,y1——2D矩形的左上角坐标; width,height——2D矩形的宽和高。 举例如下:
例9. 16 import java. awt. ; import java. applet. ; import java. awt 例9.16 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Rect extends Applet {public void paint(Graphics g) { Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); Rectangle2D rect=new Rectangle2D.Double(40,50,250,300);//创建矩形对象 d2.draw(rect);//画出矩形 d2.setColor(Color.blue); Rectangle2D rect1=new Rectangle2D.Double(80,100,250,300);//创建矩形对象 d2.draw(rect1);//画出矩形 } 运行效果如图:
9.2.3 绘制2D圆角矩形 然后再绘制2D圆角矩形。 举例如下: 调用格式:先创建2D圆角矩形对象: RoundRectangle2D r_rect=new RoundRectangle2D.Double(double x1,double y1,double width,double height , double arcw,double arch); 然后再绘制2D圆角矩形。 作用:绘制一个2D圆矩形。 参数说明:x1,y1,width,height——分别为 2D圆角矩形的左上角坐标、宽和高; arcw,arch——分别为圆角的长轴和短轴。 举例如下:
例9. 17 import java. awt. ; import java. applet. ; import java. awt 例9.17 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Rect extends Applet {public void paint(Graphics g) {Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); RoundRectangle2D rect=new RoundRectangle2D.Double(40,50,50,30,20,20);//创建 矩//形对象 d2.draw(rect);//画出矩形 d2.setColor(Color.blue); RoundRectangle2D rect1=new RoundRectangle2D.Double(80,100,50,30,20,20);//创建 //矩形对象 d2.draw(rect1);//画出矩形} } 运行效果如图:
9.2.4 绘制椭圆 调用格式:先创建2D椭圆对象:Ellipse2D ellipse=new Ellipse2D.Double(double x1,double y1,double width,double height ); 然后再绘制2D椭圆。 作用:绘制一个2D椭圆。 参数说明:x1,y1,width,height——分别为2D椭 圆的左上角坐标、宽和高。 举例如下:
例9. 18 import java. awt. ; import java. applet. ; import java. awt 例9.18 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Rect extends Applet { public void paint(Graphics g) Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); Ellipse2D ellipse =new Ellipse2D.Double(10,10,100,200);//创 建椭圆对象 d2.draw(ellipse);//画出椭圆 // d2.setColor(Color.blue); Ellipse2D ellipse1=new Ellipse2D.Double(20,20,100,200);//创 建椭圆对象 d2.draw(ellipse1);//画出矩形 } 运行效果如图:
9.2.5 绘制2D园弧 调用格式:先创建2D圆弧对象:Arc2D arc=new Arc2D.Double(double x1,double y1,double width,double height ,double starang,double endang,arc2D.pie); 然后再绘制2D圆弧。 作用:绘制一条2D圆弧。 参数说明:x1,y1,width,height—2D圆弧外 接矩形的左上角坐标、宽和高。 Starang,ending——圆弧的起始角和终止角, 单位为“度”。最后一个参数的取值为: Arc2D.OPEN、Arc2D.PIE、Arc2D.CHORD分 别代表开弧、饼弧、弓弧。 举例如下:
例9. 19 import java. awt. ; import java. applet. ; import java. awt 例9.19 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Arc extends Applet { public void paint(Graphics g) {Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); Arc2D arc1=new Arc2D.Double(20,30,80,55,0,90,Arc2D.OPEN);//创建对象 d2.draw(arc1);//画出开弧,红色 d2.setColor(Color.blue); Arc2D arc2=new Arc2D.Double(40,30,80,55,0,90,Arc2D.PIE);// 创建对象 d2.draw(arc2);//画出饼弧,蓝色 d2.setColor(Color.green); Arc2D arc3=new Arc2D.Double(80,30,80,55,0,90,Arc2D.CHORD);//创建对象 d2.draw(arc3);//画出弓弧,绿色 } 运行效果如图:
9.2.6 绘制二次曲线 调用格式:先创建2D二次曲线对象:QuadCurve2D draw_c=new QuadCurve2D.Double(double x1,double y1,double x2,double y2,double x3,double y3 );然后再绘制二次曲线。 作用:绘制二次曲线。 参数说明:x1,y1,x2,y2——分别为两个端点坐标。 X3,y3——控制点坐标。 举例如下:
例9. 20 import java. awt. ; import java. applet. ; import java. awt 例9.20 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Rect extends Applet {public void paint(Graphics g) {Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); QuadCurve2D draw_c1=new QuadCurve2D.Double(10,50,100,100,20,40);//创建对象 d2.draw(draw_c1);//画出 d2.setColor(Color.blue); QuadCurve2D draw_c2=new QuadCurve2D.Double(20,60,100,100,40,80);//创建对象 d2.draw(draw_c2);//画出 d2.setColor(Color.green); QuadCurve2D draw_c3=new QuadCurve2D.Double(30,70,100,100,80,160);//创建对象 d2.draw(draw_c3);//画出 } } 运行效果如图:
9.3 Color类 java语言的颜色类——Color类为我们定义了丰富 的颜色值常量和颜色值产生的方法,能够让我们控 制各种色彩的显示。其每一种颜色都是由“红-绿- 蓝”三原色合成。
9.3.2 Color类中的常用方法 1 Color() 调用格式:public color(int red,int green,int blue) 作用:配置颜色。 参数解释:red,green,blue——分别为配置三 原色(红、绿、蓝)的色值。 举例如下:
例9. 21 import java. awt. Graphics; import java. applet 例9.21 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class circle { protected int x,y,width,height; circle() x=35; y=35; width=50; height=100; } public class showcircle extends Applet circle t=new circle(); public void paint(Graphics g) Color co=new Color(255,0,0); g.setColor(co); g.drawOval(t.x+150,t.y+150,t.width,t.height); Color co1=new Color(0,0,255); g.setColor(co1); g.fillOval(t.x,t.y,t.width,t.height); 运行效果如图:
2 Getred() 调用格式:public int getred() 作用:返回当前色值中的红色含量值。 3 Getblue() 调用格式:public int getblue() 作用:返回当前色值中的蓝色含量值。 4 GetGreen() 调用格式:public int getGreen() 作用:返回当前色值中的绿色含量值。 以上三个方法举例如下:
例9. 22 import java. awt. Graphics; import java. applet 例9.22 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; public class showcircle extends Applet { public void paint(Graphics g) Color co=new Color(255,0,0); g.setColor(co); Color c=g.getColor(); g.drawString("红色含量值"+c.getRed(),10,20); g.drawString("绿色含量值 "+c.getGreen(),10,40); g.drawString("蓝色含量值 "+c.getBlue(),10,60); }
5 Setcolor() 调用格式:public abstact void Setcolor( Color c) 作用:设置当前颜色值。 参数解释:c——颜色值。 运行事例参看“例19”。 6 Getcolor() 调用格式:public abstact color getcolor() 作用:返回当前颜色值。 举例如下:
例9. 23 import java. awt. Graphics; import java. applet 例9.23 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; public class showcircle extends Applet { public void paint(Graphics g) g.setColor(g.getColor()); g.fillOval(20,30,40,50); }
9.4 Font类 在前面章节的很多例子中我们都使用了输出 文本的方法。在没有设置字体、字型号的 情况下,其输出都是采用的默认字体和字 型号。在java语言中,我们可以通过Font 类来设定不同的输出字体、字型号,使我 们的界面更美观、更漂亮。下面我们就 Font类的使用做一详解。 Java语言中,设置字体输出的操作顺序一般 是:先用Font类创建字体对象,然后用 setFont()方法设置输出字体,最后用 drawString()输出结果。
9.4.1 利用Font类建立字体 1 Font类建立字体调用格式: Font crea_Font=new Font(string font_name,int font_style,int font_size) 2 参数说明: font_name——字体的名称。如:“SansSerif”、 “Times”、“黑体”、“宋体”等。 font_style——字体的样式。如:Font.PLAIN(正常 体)、Font.BOLD(加粗体)、Font.ITALIC(斜 体)等。 font_size——字体大小的磅值,是一个数字。如: 10、12、14、18、20等。 创建字体的使用举例:
例9. 24 import java. awt. Graphics; import java. applet 例9.24 import java.awt.Graphics; import java.applet.*; public class showfont extends Applet { Font font1=new Font(“Times New Roman”,Font.BOLD,14); Font font2=new Font(“SansSerif”,Font.ITALIC,48); Font font3=new Font(“Serif”,Font.PLAIN,60); public void paint(Graphics g) g.setFont(font1); g.drawstring(“这是Times New Roman字体”,20,30); g.setFont(font2); g.drawstring(“这是SansSerif字体”, 60,30); g.setFont(font3); g.drawstring(“这是Serif字体”, 80,30); } 运行效果如图:
9.4.3输出字体的方法drawstring() 9.4.2设置字体的方法setFont() 1、作用:设置当前输出字符串的字体。 2、setFont()调用格式: public void setFont(Font font) 3、参数说明:font——字体对象。 事例参看例9.24。 9.4.3输出字体的方法drawstring() 1、作用:按当前设定的字体输出字符串。 2、setFont()调用格式: public void drawstring(string s,int x,int y) 3、参数说明:s——输出的字符串。X,y——字符 串的输出坐标(x,y)
9.5 图像的处理 Java语言支持两类格式的图像处理,它们是GIF格 式与JPEG格式。与图形处理不同的是图形处理 是Java程序绘制出来的,而图像是用其他工具生 成的特殊二进制文件。 Java语言处理图像的一般步骤是:先加载图像, 然后输出图像。 9.5.1 加载图像 加载图像常在程序的初始化方法中进行,使用的 方法是getImage()。 1、调用格式:getImage(URL ur,String Fname) 2、作用:加载指定的图像文件。该方法有返回值, 返回值是一个Image对象。 3、参数解释:ur——URL(Universal Resource Locator)类的对象,用于指出图像文件所在的地 址。Fname——图像文件名称。
9.5.2 输出图像 显示使用的方法是drawgetImage()。 1、调用格式:drawImage(Image img,int x,int y,int width,int height,Color bcolor,ImageObserver observer) 2、作用:将加载的图像显示与指定位置。 3、参数解释: img——显示的图像。 X,y——图像显示位置的左上角坐标。 Width,height——图像实际显示时的高度、宽度。 bcolor——图像显示区域的背景色。 Observer——图像加载跟踪器。其值常设为this, 用以表示用Applet做跟踪器。 以上两个显示图像的方法结合起来举例如下:
例9. 25 import java. awt. ; import java. applet 例9.25 import java.awt.*; import java.applet.*; public class show_image extends Applet { Image img; public void init(){ img=getImage(getCodeBase(),"Fish.jpg" ); }// getCodeBase()用于指定当前路径 public void paint(Graphics g) { g.drawImage(img,30,20,this); } 运行效果如图:
本章小结: 本章主要讲述了java语言的Graphics类的使 用方法。通过本章的学习,我们应能参照本章许多 事例掌握Graphics类各种画图方法的使用,达到灵 活运用的目的。
任务一:认识小程序
什么是Applet Java Applet是Java的一种可运行代码。 Java Applet在支持Java虚拟机的浏览器环境中运行。 它是Java与Web相结合而引入的一种重要的Java应 用形式 。
Applet与Application Application和Applet是利用JAVA语言生成的可运行代码 中最常用的两种 Application以控制台方式运行,以main()方法作为程序 执行的入口 Applet本身不能直接运行,必须嵌入到浏览器中,由浏览 器加载执行。 第32页
Java Applet基础 下面我们通过一个例子来说明一个Java applet 的全过 程:Example 2.编译. 生成.class 文件 3.运行. 编写一个超文本文件,告诉浏览器运行该applet。 <applet code=A.class height=300 width=200> </applet> <applet…>和</applet>告诉浏览器将运行一个Java Applet,其中详细内容参阅教材271页。
Java Applet的基本框架 Applet的基本框架由一套方法组成。 public void init() public void start() public void stop() public void paint(Graphics g) public void destroy() 第34页
Java Applet的生命周期 初始态 消亡态 停止态 运行态 第一次载入 调用init()方法 运行 调用start()方法 调用stop()方法 当浏览器图标化或打开另一页 当浏览器从图标恢复或重新装入此页 调用start()方法 当前页面被关闭或浏览器关闭 调用destroy()方法 第35页
Java applet 主类对象由浏览器打开超文本文件,发现 有applet标记时创建,大小由width和height确定。 主类的实例本身是容器,有 x 相应的坐标系统,单位是像 素,原点是容器的左上角, y 可以使用add()方法放置组件。 下述的五个方法会在特定的情况下由小程序主类对象 自动调用。 主类对象
Java Applet基础 初始化init()方法 1)对象首先自动调用init()方法,完成必要的初始 化操作 2)主要任务:创建所需对象,设置初始状态,装 载图像,设置参数等。 3)格式:public void init(){……} 4)init()方法只被调用一次。
Java Applet基础 启动start()方法 1)初始化后,紧接着自动调用start()方法。 2)start()方法将多次被自动调用执行,除进入执 行过程时调用方法start()外,当用户从applet所在 的web页面转到其他页面,然后又返回时, start() 方法将再次被调用,但不再调用init()方法。 3)格式:public void start(){……}
Java Applet基础 停止stop()方法 1)当浏览器离开java applet所在的页面转到其他 页面时,stop()方法被调用。 2)可多次调用。 3)若没有定义stop()方法,则当用户离开java applet页面时,java applet 将继续使用系统资源, 若定义了stop()方法,则可以挂起applet的执行。 4)格式:public void stop(){……}
Java Applet基础 删除 destroy()方法 当浏览器结束浏览时,执行destroy()方法,结 束applet的生命。 描绘 paint (Graphics g)方法 1)可以使一个applet在屏幕上显示某些信息,如文字、色彩、背景、 图像等。 2)可以多次调用。如:遮挡重现、改变窗口大小、本身需要显示 信息等(自动调用) 3)参数g,可以理解为一个画笔。 见例题Example1
Java Applet基础 play(URL soundDirectory, String soundfile); repaint()方法 方法repaint()首先调用update()清除paint()方法 以前所画的内容,然后由update()再调用paint() 方法。 Applet对多媒体的支持——声音播放 方法1:通过Applet类中的play()方法播放声音: play(URL soundDirectory, String soundfile); play(URL soundURL); 方法2: 使用java.applet.AudioClip类 AudioClip类中定义了一些播放声音有关的方法: play()、loop()、stop()
Java Applet基础 Applet类中提供了方法 注意: 见例AudioPlay、AudioLoop getAudioClicp(URL directory ,String sound) 该方法用来得到一个AudioClicp对象,其参数URL可由方 法:getCodeBase()、getDocumentBase()得到。 注意: 只有applet可以播放声音,application不行 只支持“.au”的声音文件格式 见例AudioPlay、AudioLoop 面向对象程序设计Java 黑龙江大学软件学院 版权所有© 2009
Applet程序的运行 方法一: JDK提供的浏览Applet的简易工具 ( JDK\bin目录): appletviewer 方法二:用浏览器运行 第43页
Applet与GUI Applet类为JPanel的子类,而JPanel为Java图形用 户界面中的一个组件。因此Applet可以使用图形化 用户界面与用户进行数据交换。 良好的用户界面是Applet的一个重要的优势。 第44页
任务二:在小应用程序中绘图
1 小应用程序 包含Swing组件的小应用程序必须继承 javax.swing.JApplet。 JApplet是Applet的子类,它继承了Applet的成员 方法,JApplet的小应用程序中只能加载Swing组件。 由于本书以Swing讲解GUI编程,因此下面只讲解 JApplet小应用程序
1 小应用程序 JApplet程序编写以后,还要编写一个加载该程序 的html文件,其中必须包含一对下列格式的applet 标签: <applet code=”.class文件名” width = 宽度值 height = 高度 值> </applet>
2 在小应用程序中绘图 JPanel经常用作中间容器组织界面上组件的布局, 此外,它的另一个重要用途是绘图。虽然绘图也可 以调用paint( )方法实现,但调用paint( )方法可能 影响其它组件。 在面板上绘图需要创建一个类继承JPanel,并覆盖 下列方法: protected void paintComponent(Graphics g)
2 在小应用程序中绘图 使用paintComponent( )方法有下列注意事项: 为了确保绘图区域是干净的,用户覆盖这个方法时, 应该通过super.paintComponent( g)调用超类的 方法。 paintComponent( )方法是用户无法调用的,只能由 虚拟机调用。 组件第一次显示或重新显示时,paintComponent( ) 方法被自动调用。 如果需要重新运行paintComponent( )方法,用户可 以调用repaint()方法,该方法使虚拟机调用 paintComponent( )方法
2 在小应用程序中绘图 Graphics中定义了很多绘图的方法, paintComponent( )方法中可以调用这些方法绘图。 常用的方法有: void setColor(Color c) //设置画笔颜色 void setFont(Color c) //设置画笔字体 void drawString(String text, int x, int y) //从坐标(x,y)开始显示文本text void drawLine(int x1, int y1, int x2, int y2) //从坐标(x1,y1)到坐标(x2,y2)画直线 void drawRect(int x, int y, int w, int h) //画空心矩形,(x,y)是左上角坐标,w、h是宽和高 void fillRect(int x, int y, int w, int h) //画填充颜色的矩形 void drawOval(int x,int y,int w,int h) //画空心椭圆,(x,y)是外接矩形左上角,w、h是宽和高 void fillOval(int x, int y, int w, int h) //画填充颜色的椭圆
3 实现项目程序 这样我们可以按照下列步骤完成时钟程序: 定义一个类ClockPanel继承JPanel,并覆盖 paintComponent()方法。 在ClockPanel的构造方法中创建定时器Timer对象,由 面板类自己监听该对象发出的ActoinEvent事件,因此 面板类必须实现ActionListener接口,覆盖 actionPerformed()方法,并在方法中调用repaint()方 法。这样,每次Timer对象发出事件后,都运行 repaint(),该方法调用paintComponent()重新绘图。 在paintComponent()中绘制时钟刻度盘,并根据具体 时间绘制秒针、分针、时针。 定义类ClockApplet继承Japplet,在init()方法中创 建并加载ClockPanel对象。
补充:Java 2D绘图 要点: 1、Graphics类 2、Graphics2D类 3、Color类 4、Font类 5、图像的处理
Graphics类-- 绘制直线 graphics类绘制直线的方法是drawLine() 调用格式为:drawLine(int x1,int y1,int x2,int y2) 作用:自(x1,y1)点开始至 (x2,y2)点结束绘制一条 直线。 方法中参数解释:X1,y1,x2,y2分别为所绘直线的 起始点坐标(x1,y1)和终止点坐标(x2,y2)。
举例如下: 例1:drawLine(2,3,2,7) 此语句的作用是绘制出一条起始点坐标为(2,3)和终止点坐标为(2, 7)的直线。 例2: import java.applet.*; import java.awt.*; public class Draw_line extends Applet { public void paint(Graphics g) { g.setColor(Color.red); g.drawLine(2,4,12,400); g.drawLine(40,80,100,200); g.drawLine(0,0,500,500); }
Graphics类--绘制矩形 graphics类绘制矩形的方法有四个,它们分别为 drawRect()、fillRect()、drawRoundRect ()、fillRoundRect()。 drawRect() 调用格式:drawRect(int x,int y,int width,int height) 作用:以(x,y)为矩形的左上角顶点,绘制一个宽、高 分别为width和height的矩形。 方法中的参数解释如下: x,y——所绘制矩形左上角坐标。 Width,height——所绘制矩形的宽和高。
该方法的使用举例如下: 例3 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class drawR { protected int x,y,width,height; drawR(int a,int b,int c,int d) { x=a; y=b; width=c; height=d; } public class drawRect extends Applet { drawR t; public void paint(Graphics g) {t=new drawR(35,35,50,100); g.setColor(Color.red); g.drawRect(t.x,t.y,t.width,t.height); 该例绘制出一个左上角坐标为(35,35),宽为50,高为100的矩形。运行效果 如图:
fillRect() 调用格式为:fillRect(int x,int y,int width,int height) 作用:以(x,y)为矩形的左上角顶点,绘制 一个宽、高分别为width和height有填充色 的实心矩形。 方法中的参数解释如下: x,y——所绘矩形左上角坐标。 Width,height——所绘矩形的宽和高。 与drawRect()的区别:所绘制的矩形中可有 填充色。
该方法的使用举例如下: 例4 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class drawR { protected int x,y,width,height; drawR(int a,int b,int c,int d) { x=a; y=b; width=c; height=d; } public class showdrawR extends Applet { drawR t; public void paint(Graphics g) {t=new drawR(35,35,50,100); g.setColor(Color.red); g.fillRect(t.x,t.y,t.width,t.height); 运行效果如下:
drawroundRect() 调用格式为:drawRoundRect(int x,int y,int width,int height,int arcW,int arcH) 作用:以(x,y)为矩形的左上角顶点,绘制 一个宽、高分别为width和height的圆角矩 形。 方法中的参数解释如下: x,y——所绘矩形左上角坐标。 Width,height——所绘矩形的宽和高。 arcW,arcH分别为所绘矩形圆角的宽和高。
例5 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class drawR { protected int x,y,width,height,arw,arh; drawR(int a,int b,int c,int d,int w,int h) { x=a; y=b; width=c; height=d; arw=w; arh=h;} } public class showdrawR extends Applet { drawR t; public void paint(Graphics g) { t=new drawR(35,35,50,100,20,20); g.setColor(Color.red); g. drawRoundRect(t.x,t.y,t.width,t.height,t.arw,t.arh);} 该程序运行的效果如下:
fillRoundRect() 调用格式为: fillRoundRect(int x,int y,int width,int height,int arcW,int arcH) 方法作用:以(x,y)为矩形的左上角顶点,绘制一个 宽、高分别为width和height可有填充色的圆角矩形。 方法中的参数解释如下: x,y——所绘矩形左上角坐标。 Width,height——所绘矩形的宽和高。 arcW,arcH分别为所绘矩形圆角的宽和高。 与drawRoundRect()的区别:该方法所绘制的圆角矩 形中可有填充色。
例6 该程序运行的效果如下: import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class drawR { protected int x,y,width,height,arw,arh; drawR(int a,int b,int c,int d,int w,int h) { x=a; y=b; width=c; height=d; arw=w; arh=h;} } public class showdrawR extends Applet { drawR t; public void paint(Graphics g) { t=new drawR(35,35,50,100,20,20); g.setColor(Color.red); g.fillRoundrect(t.x,t.y,t.width,t.height,t.arw,t.arh);} 该程序运行的效果如下:
Graphics类--绘制3D矩形 顾名思义,就是java语言所具有的三维矩形绘制 功能,它是利用draw3DRect()和fill3DRect()函 数来实现的。 Draw3DRect() 调用格式:draw3DRect(int x,int y,int width,int height,Boolean b) 功能:以左上角坐标为(x,y),用指定的宽width和 高height绘制一个三维矩形。当变量b的值为true时, 所绘矩形为凸起的;当变量b的值为false时,所绘矩形 为下凹的。 参数介绍如下: x,y——三维矩形的左上角坐标; width,height——三维矩形的宽和高。
例7 上例绘制出一个具有下凹三维效果的矩形。 import java.awt.*; import java.applet.*; public class Draw_rec extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.draw3DRect(10,150,100,100, false); } 上例绘制出一个具有下凹三维效果的矩形。
fill3DRect() 调用格式:fill3DRect(int x,int y,int width,int height,Boolean b) 功能:以左上角坐标为(x,y),用指定的宽 width和高height绘制一带有填充色的三维 矩形。当变量b的值为true时,所绘矩形为 凸起的;当变量b的值为false时,所绘矩形 为下凹的。 参数介绍如下: x,y——三维矩形的左上角坐标; width,height——三维矩形的宽和高。
上例绘制出一个具有凸起且内填充色为蓝色的三维矩形。 例8 import java.awt.*; import java.applet.*; public class Draw_rec extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.fill3DRect(10,150,100,100,false); g.fill3DRect(10,150,100,100,true); } 上例绘制出一个具有凸起且内填充色为蓝色的三维矩形。
Graphics类--绘制弧形 Graphics类绘制弧形的函数有两个:drawArc() 和fillArc(),前一个用于绘制无填充色的弧形, 后一个用于绘制有填充色的弧形。 drawArc() 调用格式: drawArc(int x,int y,int width,int height,int anglestart,int angleend) 作用:绘制一段圆弧。 方法中参数解释: x,y——该圆弧外接矩形的左上角坐标。 Width,height——该圆弧外接矩形的宽和高。 Anglestart,angleend——该圆弧的起始角和终止角, 单位为“度”。“0”(零)度角为x轴的正方向。正的 角度按逆时针方向旋转;负的角度按顺时针方向旋转。
例9 运行效果如下: import java.applet.*; import java.awt.*; public class Draw_arc extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.drawArc(0,40,100,100, 0,180); g.drawArc(300,40,30,100, 0,360); g.drawArc(200,100,50,50, 0,270); } 运行效果如下:
fillArc() 调用格式:fillArc(int x,int y,int width,int height,int anglestart,int angleend) 作用:绘制一段着色圆弧(扇形)。 参数解释: x,y——该圆弧外接矩形的左上角坐标。 Width,height——该圆弧外接矩形的宽和高。 Anglestart,angleend——该圆弧的起始角和 终止角,单位为“度”。“0”(零)度角为x 轴的正方向。正的角度按逆时针方向旋转;负的 角度按顺时针方向旋转。
例10 运行效果如下: import java.applet.*; import java.awt.*; public class Draw_arc extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.fillArc(0,40,100,100,0,180); g.fillArc(300,40,30,100,0,360); g.fillArc(200,100,50,50,0,270); } 运行效果如下:
Graphics类--绘制椭圆 graphics类绘制椭圆的函数有两个:drawOval() 和fillOval(),前一个用于绘制无填充色的椭圆, 后一个用于绘制有填充色的椭圆。 drawOval() 调用格式:drawOval(int x,int y,int width,int height) 作用:绘制一个椭圆。 参数解释: x,y——该椭圆的中心坐标。 Width,height——该椭圆的宽和高。
例11 运行效果如下: import java.applet.*; import java.awt.*; public class Draw_oval extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.drawOval(100,40,50,24); g.drawOval(50,50,30,100); g.drawOval(10,10,20,70); } 运行效果如下:
fillOval() 调用格式:fillOval(int x,int y,int width,int height) 作用:绘制一个实心着色椭圆。 参数解释: x,y——该椭圆的中心坐标。 Width,height——该椭圆的宽和高。
其中setcolor()用于指定椭圆着色的色值。 运行效果如下: 例12 import java.applet.*; import java.awt.*; public class Draw_oval extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.fillOval(100,40,50,24); g.fillOval(50,50,30,100); g.fillOval(10,10,20,70); } 其中setcolor()用于指定椭圆着色的色值。 运行效果如下:
Graphics类--绘制多边形 graphics类绘制多边形的函数有两个: DrawPolygon ()和fillPolygon (),前一个 用于绘制无填充色的多边形,后一个用于 绘制有填充色的多边形。 drawPolygon() 调用格式:drawPolygon(int x[],int y[],n) 作用:绘制一个无填充色的多边形。 方法中参数解释: n——多边形的顶点个数加1。 X[],y[]——多边形中n个顶点的坐标值。
例13 运行效果如图: import java.applet.*; import java.awt.*; public class Draw_poly extends Applet { public void paint(Graphics g) { int x1[]={20,50,70,80, 80, 20}; //x1[0],x1[5]相 同 int y1[]={30,30,50,80,100, 30 }; //y1[0],y1[5]相同 g.setColor(Color.red); g.drawPolygon(x1,y1,6); //补充:165页 //g.drawLine(20,30,50,30); //g.drawLine(50,30,70,50); //g.drawLine(70,50,80,80); //g.drawLine(80,80,80,100); //g.drawLine(80,100,20,30); } 运行效果如图:
fillPolygon() 调用格式:fillPolygon(int x[],int y[],n) 作用:绘制一个有填充色的多边形。 方法中参数解释: n——多边形的顶点个数。 X[],y[]——多边形中n个顶点的坐标值。
例14 运行效果如图: import java.applet.*; import java.awt.*; public class Draw_poly extends Applet { public void paint(Graphics g) int x1[]={20,50,70,80,80,20}; int y1[]={30,30,50,80,100,30}; g.setColor(Color.red); g.fillPolygon(x1,y1,6); } 运行效果如图: