文字与图形GUI设计_第1页
文字与图形GUI设计_第2页
文字与图形GUI设计_第3页
文字与图形GUI设计_第4页
文字与图形GUI设计_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章文字与图形GUI设计8.1GUI设计概述8.2绘制文字8.3Color类8.4Graphics类8.1GUI设计概述图形用户界面(GraphicsUserInterface,简称GUI)就是为应用程序提供一个图形化的界面。GUI使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出命令、启动操作,并将系统运行的结果同样以图形的方式显示给用户,使一个应用程序具有画面生动、操作简便的效果,省去了字符界面中用户必须记忆各种命令的麻烦,深受广大用户的喜爱和欢迎,已经成为目前几乎所有应用软件的既成标准。为了方便编程人员开发图形用户界面,Java提供了抽象窗口工具包(AbstractWindowingToolKit,缩写为AWT)和Swing包这两个图形用户界面工具包。在这两个工具包中提供了丰富的类库来支持编程人员创建与平台无关的用户界面。编程人员可方便地使用这些类库来生成各种标准图形界面元素并处理图形界面的各种事件。8.1.1图形用户界面元素分类

1.容器容器是用来组织或容纳其他界面成分和元素的组件。一个容器可以包含许多组件,同时它本身也可以作为一个组件,放进另一容器中。一般来说,一个应用程序的图形用户界面首先对应于一个复杂的容器,例如一个窗口。这个容器内部将包含许多界面成分和元素,其中某些界面元素本身也可能又是一个容器,这个容器再进一步包含它的界面成分和元素,依此类推就构成一个复杂的图形界面系统。容器是Java中的类,例如框架(JFrame)、面版(JPanel)及滚动面板(JScrollPanel)等类。容器的引入有利于分解图形用户界面的复杂性。当界面的功能较多时,使用层层相套的容器是非常必要的。

2.控制组件与容器不同,控制组件是图形用户界面的最小单位之一,它里面不再包含其他的成分。控制组件的作用是完成与用户的一次交互,包括接收用户的一个命令(如菜单命令),接收用户输入的一个文本或选择,向用户显示一段文本或一个图形等等。从某种程度上来说,控制组件是图形用户界面标准化的结果,目前常用的控制组件有选择类的单选按钮、复选按钮、下拉列表,有文字处理类的文本框、文本区域,有命令类的按钮、菜单等。使用控制组件,通常需要如下的步骤:

(1)创建某控制组件类的对象,指定其大小等属性。

(2)使用某种布局策略,将该控制组件对象加入到某个容器中的指定位置处。

(3)将该组件对象注册给所能产生的事件对应的事件监听程序,重载事件处理方法,实现利用该组件对象与用户交互的功能。

3.用户自定义成分除了上述的标准图形界面元素外,编程人员还可以根据用户的需要,使用各种字型、字体和色彩设计一些几何图形、标志图案等,它们被称为用户自定义成分。用户自定义成分通常只能起到装饰、美化的作用,而不能响应用户的动作,也不具有交互功能。由于用户自定义成分易于学习和掌握,同时,各种基本图形和说明性文字又是容器和控制组件的基本成分,而且考虑到由浅入深的学习规律,因此我们先在本章利用AWT包学习用户自定义成分,在第9章和第10章再学习控制组件和复杂的容器。8.1.2屏幕坐标系文本与图形通过一定的坐标关系显示在屏幕的适当位置上。Java坐标系是一个二维网格,它可以标识屏幕上每个点的坐标位置。坐标单位用像素来度量。一个像素是一台显示器的最小分辨单位。坐标系由一个x坐标(水平坐标)和一个y坐标(垂直坐标)组成。在缺省状态下原点为屏幕左上角坐标(0,0),因此,x坐标是从左向右移动的水平距离,y坐标是从上向下移动的垂直距离。图8.1中的坐标(x,y)表示点与原点的水平距离是x,垂直距离是y。图8.1Java坐标系00

X轴Y轴8.1.3与文字图形有关的类图8.2给出了java.awt包层次的一部分——有关文字、颜色和基本图形的类。图中的每一个类都是从类Object直接派生出来的:类Font是用于操作字体的;类Color是用于操作颜色的;类FontMetrics主要用于获取字体的有关信息;类Polygon用于创建多边形;类Graphics用于绘制各种串、线、矩形、圆和其他几何图形。图8.2java.awt包中的文字图形类(是由Object类派生的)ObjectColorFontFontMetricsComponentGraphicsPolygon8.1.4Applet的执行程序限于我们目前的知识,在讲述本章的内容时我们以Applet应用程序为所有示例程序的容器,且通过引用或重载Applet类的某些成员方法来实现文字及图形的绘制。为此,有必要先介绍Applet应用程序的执行过程及其所引用的方法。每个Applet应用程序都是Applet类的子类,在实际运行中,浏览器在下载字节码的同时,会自动创建一个用户Applet子类的对象,并在适当事件发生时自动调用该对象的几个主要方法。下面说明这些方法的引用过程。

(1)init()方法:当Applet程序启动时自动调用init()方法。init()方法仅用来做初始化操作。用户程序可以重载父类的init()方法,通过init()方法初始化图像文件、声音文件、字体或者其他一些对象等。

(2)start()方法:Applet运行init()方法之后将自动调用start()方法,start()方法体现了小应用程序要完成的功能。我们可以重载父类的start()方法,在这个方法体内实现我们程序的功能。

(3)paint()方法:它的主要作用是在Applet的界面中显示文字、图形和其他界面元素。浏览器调用paint()方法的事件主要有如下三种。①当浏览器首次显示Applet时,会自动调用paint()方法。②当用户调整窗口大小或移动窗口时,浏览器会调用paint()方法。③当repaint()方法被调用时,系统将首先调用update()方法将Applet对象所占用的屏幕空间清空,然后调用paint()方法重画。

(4)stop()方法:当用户将浏览Applet程序所在的Web页面切换到其他页面时,浏览器会自动调用stop()方法,让Applet程序终止运行。如果用户又回到Applet程序所在的Web页面时,则浏览器将重新启动Applet程序的start()方法。

(5)destroy():当用户关闭Applet程序窗口时,浏览器会自动执行此方法,结束程序,释放所占资源。

8.2绘制文字8.2.1绘制文字的成员方法由于字符串可以用字符串对象、字符数组、字节数组三种不同形式表示,故Java在Graphics类中相应地提供了三个成员方法来绘制这三种不同形式的字符串(见表8.1)。表8.1绘制字符和字符串的成员方法成员方法参数说明功能drawString{Stringstring,intx,inty}string是字符串对象;x,y是起始坐标以坐标x,y为起始位置,用当前的字体和颜色绘制string代表的字符串drawChars{char[]ch,intoffset,intnumber,intx,inty}ch是字符数组名;offset是要绘制的第一个字符在数组中的下标;number是要绘制的字符个数;x,y是起始坐标从ch数组下标为offset的位置开始截取number个字符,从坐标x,y处开始用当前的字体和颜色绘制number个字符drawBytes{byte[]by,intoffset,intnumber,intx,inty}by是字节数组名;offset是要绘制的第一个字符在数组中的下标;number是要绘制的元素个数;x,y是起始坐标从by数组下标为offset的位置开始取number个字节,从坐标x,y处开始用当前的字体和颜色绘制number个字符【示例程序c8_1.java】使用上述三个成员方法绘制“WELCOMETOXI'AN”。importjava.applet.Applet;importjava.awt.Graphics;publicclassc8_1extendsApplet{privateStrings="WELCOME!";privatecharc[]={'T','O','a','e','t'};privatebyteb[]={'d','4','X','I','\047','A','N'};publicvoidpaint(Graphicsg)//覆盖Applet的成员方法

{g.drawString(s,50,25);g.drawChars(c,0,2,50,50);g.drawBytes(b,2,5,50,75);}}在这个程序中,为了学习使用绘制字符和字符串的三个成员方法,我们分别定义了一个字符串对象s、一个字符数组c和一个字节数组b,分别用于保存三行文字内容。最后,我们通过覆盖Applet类的paint()方法,在这个方法中引用绘制字符和字符串的成员方法来实现文字的绘制。该程序的运行结果见图8.3。图8.3程序c8_1的运行结果8.2.2Font类

1.Font类的构造方法

Font类用来描述字体的名称(Name)、大小(Size)和样式(Style)。使用Font类的构造方法创建一个Font类的对象,其格式如下:

Font(Stringfontname,intstyle,intsize)其中:fontname为字型名,如宋体、黑体、楷体、Arial、Courier、TimesRoman、Helvetica等;style为字体样式,如粗体(BOLD)、斜体(ITALIC)、正常体(PLAIN);Size为用像素点表示的字体大小。

2.Font类的成员方法创建一个Font类对象后,就可以使用Font类提供的成员方法来获取字体、字型等方面的信息。Font类提供的常用成员方法如表8.2所示。表8.2java.awt.Font类方法成员方法功能说明publicstaticFontdecode(Stringstr)使用传递进来的名称获得指定的字体publicstringgetFamily()获得指定平台的字体名publicstringgetName()获得字体的名称publicintgetStyle()获得字体的样式publicintgetSize()获得字体的大小publicbooleanisPlain()若字体是正常型,则返回truepublicbooleanisBold()若字体是粗体,则返回truepublicbooleanisItalic()若字体是斜体,则返回truepublicstringtoString()将此对象转换为一个字符串表示

3.设置字体可以用java.awt.Graphics类的成员方法来设置自己希望使用的字体,其格式如下:

setFont(FontmyFont);【示例程序c8_2.java】使用不同的字体绘制文字。importjava.awt.*;importjava.applet.Applet;publicclassc8_2extendsApplet

{Fontf1=newFont("TimesRoman",Font.BOLD,16);//字体为TimesRoman,字体样式加粗

Fontf2=newFont("Courir",Font.ITALIC,24);//字体为Courir,字体样式倾斜

Fontf3=newFont("Helvetica",Font.PLAIN,14);//常规

StringhStr="Courir";

publicvoidpaint(Graphicsg){

g.setFont(f1);g.drawString("TimesRoman",20,50);g.setFont(f2);g.drawString(hStr,20,100);g.setFont(f3);g.drawString("Helvetica",20,150);}}图8.4程序c8_2的运行结果该程序的运行结果如图8.4所示。<【示例程序c8_3.java】获取字体信息。importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Font;publicclassc8_3extendsApplet{Fontf=newFont("Courier",Font.ITALIC+Font.BOLD,24);//字体样式倾斜加粗

publicvoidpaint(Graphicsg){intstyle,size;

Strings,name;g.setFont(f);style=f.getStyle();//得到字体样式

if(style==Font.PLAIN)s="Plain";elseif(style==Font.BOLD)s="Bold";elseif(style==Font.ITALIC)s="Italic";elses="Bolditalic";size=f.getSize();//得到字体大小

s+=size+"point";name=f.getName();//得到字体名称

s+=name;g.drawString(s,10,50);g.drawString("Fontfamilyis"+f.getFamily(),10,100);}}图8.5程序c8_3的运行结果【示例程序c8_4.java】使用识别字型字体的成员方法。importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Font;publicclassc8_4extendsApplet{Fontf=newFont("Courier",Font.ITALIC+Font.BOLD,24);publicvoidpaint(Graphicsg){Strings;g.setFont(f);

if(f.isPlain()==true)s="Fontisplain.";elseif(f.isBold()==true&&f.isItalic()==false)s="Fontisbold.";elseif(f.isItalic()==true&&f.isBold()==false)s="Fontisitalic.";elses="Fontisbolditalic.";g.drawString(s,25,25);}}图8.6程序c8_4的运行结果8.2.3FontMetrics类图8.7字体信息图高度(height):上下两行基线之间的距离;下差(descent):一个字符低于基线的部分;上差(ascent):一个字符高于基线的部分;字冠(leading):高度去掉基线下差和基线上差后剩余的部分。

1.FontMetrics类的构造方法创建一个FontMetrics类的对象需要使用FontMetrics类的构造方法,其格式如下:

protectedFontMetrics(Fontfont)

这个构造方法用指定的字体创建一个新的FontMetrics类对象。2.FontMetrics类的成员方法表8.3java.awt.FontMetrics类成员方法成员方法功能说明publicFontgetFont()获得当前字体publicintgetLeading()获得字体的leading(字冠)值publicintgetAscent()获得字体的ascent(上差)值publicintgetDescent()获得字体的descent(下差)值publicintgetHeight()获得字体的height(高度)值publicStringtoString()返回对象的字符串表示【示例程序c8_5.java】FontMetrics类成员方法的使用。importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Font;publicclassc8_5extendsApplet{Fontfont1,font2;font1=newFont("Courier",Font.BOLD,14);font2=newFont("TimesRoman",Font.PLAIN,10);publicvoidpaint(Graphicsg){

g.setFont(font1);showStatus(g.getFont().toString());intascent=g.getFontMetrics().getAscent();intdescent=g.getFontMetrics().getDescent();intheight=g.getFontMetrics().getHeight();intleading=g.getFontMetrics().getLeading();Strings1="AscentofFontfont1is"+String.valueOf(ascent);Strings2="DescentofFontfont1is"+String.valueOf(descent);Strings3="Heightoffontfont1is"+String.valueOf(height);Strings4="LeadingofFontfont1is"+String.valueOf(leading);g.drawString(s1,10,10);g.drawString(s2,10,40);g.drawString(s3,10,70);g.drawString(s4,10,100);

ascent=g.getFontMetrics(font2).getAscent();descent=g.getFontMetrics(font2).getDescent();height=g.getFontMetrics(font2).getHeight();leading=g.getFontMetrics(font2).getLeading();s1="AscentofFontfont2is"+String.valueOf(ascent);s2="DescentofFontfont2is"+String.valueOf(descent);s3="HeightofFontfont2is"+String.valueOf(height);s4="LeadingofFontfont2is"+String.valueOf(height);g.drawString(s1,10,130);g.drawString(s2,10,160);g.drawString(s3,10,190);g.drawString(s4,10,220);}}图8.8程序c8_5的运行结果8.3Color类8.3.1Color类的构造方法表8.4java.awt.Color类的构造方法构造方法功能说明publicColor(intr,intg,intb)使用在0~255范围内的整数指定红、绿和蓝三种颜色的比例来创建一种Color对象publicColor(floatr,floatg,floatb)使用在0.0~1.0范围内的浮点数指定红、绿和蓝三种颜色的比例来创建一种Color对象publicColor(intrgb)使用指定的组合RGB值创建一种Color对象不论使用哪个构造方法来创建Color对象,都需要指定新建颜色中的R(红)、G(绿)、B(蓝)三色的比例。Java提供的这三个构造方法用不同的方式确定RGB的比例,可以使编程者从256×256×256(约16000000)种颜色中进行选择。一个RGB值由三部分组成:第一个RGB部分定义红色的量;第二个RGB部分定义绿色的量;第三个RGB部分定义蓝色的量。RGB值中某一部分的值越大,那种特定颜色的量就越大。8.3.2Color类数据成员常量用户除了可以使用构造方法指定Color的RGB值外,Java还对一些常用的颜色提供了如表8.5所示的Color类数据成员常量。表8.5Color类static数据成员常量和RGB值颜色数据成员常量颜色RGB值publicfinalstaticColorred红255,0,0publicfinalstaticColorgreen绿0,255,0publicfinalstaticColorblue蓝0,0,255publicfinalstaticColorblack黑0,0,0publicfinalstaticColorwhite白255,255,255publicfinalstaticColoryellow黄255,255,0publicfinalstaticColororange橙255,200,0publicfinalstaticColorcyan青蓝0,255,255publicfinalstaticColormagenta洋红255,0,255publicfinalstaticColorpink淡红色255,175,175publicfinalstaticColorgray灰128,128,128publicfinalstaticColorlightGray浅灰192,192,192publicfinalstaticColordarkGray深灰64,64,648.3.3Color类的成员方法表8.6Java.awt.Color类成员方法成员方法功能说明publicintgetRed()获得对象的红色值publicintgetGreen()获得对象的绿色值publicintgetBlue()获得对象的蓝色值publicintgetRGB()获得对象的RGB值publicColorbrighter()获取此颜色的一种更亮版本publicColordarker()获取此颜色的一种更暗版本此外,还可以用java.awt.Graphics类的方法设定颜色或获取颜色。这些方法及其功能如下:

setColor(Colorc):设定前景颜色,c代表颜色。

setColor(newColor(intr,intg,intb)):设定前景颜色的另一个方法。

setBackground(Colorc):设定背景颜色,c代表颜色。

getColor():获取当前所使用的颜色。8.3.4应用举例【示例程序c8_6.java】使用整型数设置字符颜色。importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Color;publicclassc8_6extendsApplet{publicvoidpaint(Graphicsg){

intred,green,blue;red=99;blue=120;green=125;g.setColor(newColor(red,green,blue));g.drawString("WelcometoXi\047an",25,75);showStatus("CurrentRGB:"+g.getColor().toString());}}图8.9程序c8_6的运行结果【示例程序c8_7.java】使用浮点型数设置字符颜色。importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Color;publicclassc8_7extendsApplet{publicvoidpaint(Graphicsg){floatred,green,blue;

red=0.39f;blue=0.49f;green=0.47f;g.setColor(newColor(red,green,blue));g.drawString("WelcometoXi\047an",25,75);showStatus("CurrentRGB:"+g.getColor().toString());}}图8.10程序c8_7的运行结果【示例程序c8_8.java】使用Color类的数据成员常量设置字符颜色。importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Color;publicclassc8_8extendsApplet{Colorc;c=Color.blue;publicvoidpaint(Graphicsg){

g.setColor(c);g.drawString("WelcometoXi\047an",25,75);

showStatus("CurrentRGB:"+String.valueOf(c.getRed())+""+String.valueOf(c.getGreen())+""+String.valueOf(c.getBlue()));}}图8.11程序c8_8的运行结果8.4Graphics类8.4.1绘制线段与矩形线段与矩形是最常用的几何图形之一,Graphics类中提供了绘制直线、平面矩形、圆角矩形、三维立体矩形等图形的成员方法。我们将这些方法一并列于表8.7中。在这些方法中,绘制圆角矩形稍微复杂一些,它除了要指定矩形区域外,还需要指明圆角的弧宽(arcWidth)和弧高(arcHeight)。该方法中参数的详细描述请参阅图8.12。表8.7Graphics类中提供线段与矩形的成员方法成员方法功能参数说明drawLine(intx1,inty1,intx2,inty2)绘制一条直线x1,y1为起点坐标;x2,y2为终点坐标;drawRect(intx,inty,intwidth,intheight)绘制平面矩形x,y为矩形左上角顶点坐标;width为矩形的宽度;height为矩形的高度fillRect(intx,inty,intwidth,intheight)绘制用当前颜色填充的矩形clearRect(intx,inty,intwidth,intheight)清除矩形区域表8.7Graphics类中提供线段与矩形的成员方法drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)绘制圆角矩形x,y,width,height四个参数的意义同上;arcWidth为圆角的弧宽;arcHeight为圆角的弧高fillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)绘制用当前颜色填充的圆角矩形Draw3Drect(intx,inty,intwidth,intheight,booleanb)绘制三维矩形x,y,width,height四个参数的意义同上;b用于确定矩形的凸凹,当b为true时矩形凸出,b为flase时矩形凹下图8.12圆角矩形【示例程序c8_9.java】绘制直线。importjava.applet.Applet;importjava.awt.Graphics;publicclassc8_9extendsApplet{publicvoidpaint(Graphicsg){g.drawLine(25,25,100,100);}}该程序的运行结果如图8.13所示。图8.13程序c8_9的运行结果图8.14程序c8_10的运行结果【示例程序c8_10.java】绘制矩形。importjava.applet.Applet;importjava.awt.Graphics;publicclassc8_10extendsApplet{publicvoidpaint(Graphicsg){g.drawRect(20,25,100,100);g.fillRect(150,25,100,100);}}该程序的运行结果如图8.14所示。【示例程序c8_11.java】绘制圆角矩形。importjava.applet.Applet;importjava.awt.Graphics;publicclassc8_11extendsApplet{publicvoidpaint(Graphicsg){g.fillRoundRect(10,15,50,80,70,10);g.drawRoundRect(80,35,50,50,10,20);g.fillRoundRect(150,15,80,80,0,0);g.drawRoundRect(270,15,100,100,100,0);g.drawRoundRect(390,50,70,40,90,50);}}图8.15程序c8_11的运行结果示例程序c8_12.java】绘制三维矩形。importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Color;publicclassc8_12extendsApplet{publicvoidpaint(Graphicsg)

{g.setColor(Color.red);g.draw3DRect(10,10,100,100,true);g.draw3DRect(130,10,100,100,false);g.fill3DRect(10,120,100,100,true);g.fill3DRect(130,120,100,100,false);}}该程序的运行结果如图8.16所示。图8.16程序c8_12的运行结果8.4.2绘制椭圆在Java中,绘制一个椭圆需要指定4个参数,分别是外切矩形左上角顶点坐标x,y和椭圆的宽度与高度。Graphics类中提供了两种绘制椭圆的成员方法,分别是:

drawOval(intx,inty,intwidth,intheight):用于绘制椭圆;

fillOval(intx,inty,intwidth,intheight):用于绘制一个用当前颜色填充的椭圆。这两个方法中的x,y为外切矩形左上角顶点的坐标,width为外切矩形的宽度,height为外切矩形的高度。方法中参数的详细描述请参阅图8.17。这两个方法的区别仅在于前者不填充,而后者会用当前颜色将椭圆区域进行填充。图8.17椭圆参数坐标0高

(height)宽(width)【示例程序c8_13.java】绘制椭圆。importjava.applet.Applet;importjava.awt.Graphics;publicclassc8_13extendsApplet{publicvoidpaint(Graphicsg){g.drawOval(20,25,50,100);g.fillOval(120,35,100,50);}}图8.18程序c8_13的运行结果8.4.3绘制弧画弧实际上是画部分椭圆。绘制一个弧需要指定6个参数,这6个参数中的前4个的含义与椭圆中的相同,另外的2个参数一个为起始角度,一个为弧角度。弧的角度用度数来衡量,表明一段弧在两个角度之间绘制。Graphics类中提供了两种绘制弧的成员方法,其格式如下:drawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle);fillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)。第一种格式用来绘制一个弧,其中:x,y为外切矩形左上角顶点坐标值;width为外切矩形的宽度;height为外切矩形的高度;startAngle为起始角度;arcAngle为弧角度。arcAngle表示从起始角度转多少角度,arcAngle为正,表示逆时针画弧,arcAngle为负,表示顺时针画弧。第二种格式用来绘制一个弧并用当前颜色将弧填满。其中:x,y为被填充弧的外切矩形的左上角顶点的坐标值;width为被填充弧的外切矩形的宽度;height为被填充弧的外切矩形的高度;startAngle为起始角度;arcAngle为弧角度。图8.19逆时针画弧0宽(width)高(height)【示例程序c8_14.java】绘制各种弧。importjava.applet.Applet;importjava.awt.Graphics;publicclassc8_14extendsApplet{publicvoidpaint(Graphicsg){g.drawArc(15,15,80,80,0,180);//逆时针画弧

g.drawArc(100,100,80,80,0,110);g.fillArc(100,15,70,80,0,278);g.fillArc(15,70,70,80,0,-110);//顺时针画弧

g.fillArc(190,15,80,140,0,-360);//当arcAngle与startAngle之差为360时成为椭圆

}}图8.20程序c8_14的运行结果8.4.4绘制多边形多边形是由一系列首尾相接的直线组成的,用户只需按照某种次序连续绘制每一条直线,Java自动将最后一条直线的终点与第一条直线的起点相连,就可形成多边形。多边形也是Java的一个类——Polygon。因此,画多边形首先需要创建Polygon类的对象,然后向该对象中添加点的坐标,最后调用drawPolygon()成员方法或fillPolygon()成员方法画多边形。下面是绘制多边形的具体步骤及所使用的成员方法。

1.创建Polygon类对象创建Polygon类对象需要使用Polygon类的下述两个构造方法之一:publicPolygon();publicPolygon(intxPoints[],intyPoints[],intnPoints);无参数的Polygon构造方法创建一个不含任何坐标点的Polygon对象。当需要坐标点时,可以再用Polygon中的成员方法addPoint()将每个坐标点加入到Polygon对象中。带参数的Polygon构造方法创建一个多边形对象,指定x坐标的数据为数组xPoints[],y坐标的数据为数组yPoints[],坐标点的总个数为nPoints。2.绘制多边形的Graphics方法表8.8绘制多边形的Graphics方法成员方法功能说明publicabstractvoiddrawPolygon(intxPoints[],intyPoints[],intnPoints)绘制一个由x点和y点数组定义的多边形publicabstractvoiddrawPolygon(Polygonp)绘制一个由指定多边形定义的多边形publicabstractvoidfillPolygon(intxPoints[],intyPoints[],intnPoints)使用当前颜色填充一个多边形publicabstractvoidfillPolygon(Polygonp)使用当前颜色填充一个指定多边形【示例程序c8_15.java】绘制多边形。importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.*;publicclassc8_50extendsApplet{

intxs1[]={20,40,50,30,20,15,20};//第一个多边形的x坐标数据

intys1[]={20,20,30,50,50,30,20};//第一个多边形的y坐标数据

intxs2[]={90,110,100,80,70,65,60,70};//第二个多边形的x坐标数据

intys2[]={90,110,80,100,100,80,60,70};//第二个多边形的y坐标数据

//创建Polygon对象p4,p5

Polygonp4=newPolygon(xs1,ys1,7);Polygonp5=newPolygon();publicvoidpaint(Graphicsg){g.setColor(Color.red);g.fillPolygon(xs2,ys2,8);g.drawPolygon(p4);//绘制五角星

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论