1、第9章 文字与图形GUI设计第9章 文字与图形GUI设计9.1 GUI设计概述设计概述9.2 绘制文字绘制文字9.3 Color类类9.4 绘制形状图形绘制形状图形习题习题9 第9章 文字与图形GUI设计9.1 GUI设计概述设计概述 图形用户界面(Graphics User Interface,简称GUI)就是为应用程序提供一个图形化的界面。GUI使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出命令、启动操作,并将系统运行的结果同样以图形的方式显示给用户,使一个应用程序具有画面生动、操作简便的效果,省去了字符界面中用户必须记忆各种命令的麻烦,深受广大用户的
2、喜爱和欢迎,已经成为目前几乎所有应用软件的既成标准。第9章 文字与图形GUI设计 为了方便编程人员开发图形用户界面,Java提供了抽象窗口工具包(Abstract Windowing ToolKit,缩写为AWT)和Swing包这两个图形用户界面工具包。在这两个工具包中提供了丰富的类库来支持编程人员创建与平台无关的用户界面。编程人员可方便地使用这些类库来生成各种标准图形界面元素并处理图形界面的各种事件。第9章 文字与图形GUI设计9.1.1 图形用户界面元素分类图形用户界面元素分类 1容器容器 容器是用来组织或容纳其他界面成分和元素的组件。一个容器可以包含许多组件,同时它本身也可以作为一个组件
3、,放进另一容器中。一般来说,一个应用程序的图形用户界面首先对应于一个复杂的容器,例如一个窗口。这个容器内部将包含许多界面成分和元素,其中某些界面元素本身也可能又是一个容器,这个容器再进一步包含它的界面成分和元素,依此类推就构成一个复杂的图形界面系统。容器是Java中的类,例如框架(JFrame)、面版(JPanel)及滚动面板(JScrollPanel)等类。容器的引入有利于分解图形用户界面的复杂性。当界面的功能较多时,使用层层相套的容器是非常必要的。第9章 文字与图形GUI设计 2控制组件控制组件 与容器不同,控制组件是图形用户界面的最小单位之一,它里面不再包含其他的成分。控制组件的作用是完
4、成与用户的一次交互,包括接收用户的一个命令(如菜单命令),接收用户输入的一个文本或选择,向用户显示一段文本或一个图形等等。从某种程度上来说,控制组件是图形用户界面标准化的结果,目前常用的控制组件有选择类的单选按钮、复选按钮、下拉列表,有文字处理类的文本框、文本区域,有命令类的按钮、菜单等。使用控制组件,通常需要如下的步骤:第9章 文字与图形GUI设计 (1)创建某控制组件类的对象,指定其大小等属性。(2)使用某种布局策略,将该控制组件对象加入到某个容器中的指定位置处。(3)将该组件对象注册给所能产生的事件对应的事件监听程序,重载事件处理方法,实现利用该组件对象与用户交互的功能。第9章 文字与图
5、形GUI设计 3用户自定义成分用户自定义成分 除了上述的标准图形界面元素外,编程人员还可以根据用户的需要,使用各种字型、字体和色彩设计一些几何图形、标志图案等,它们被称为用户自定义成分。用户自定义成分通常只能起到装饰、美化的作用,而不能响应用户的动作,也不具有交互功能。由于用户自定义成分易于学习和掌握,同时,各种基本图形和说明性文字又是容器和控制组件的基本成分,而且考虑到由浅入深的学习规律,因此我们先在本章利用AWT包学习用户自定义成分,在第9章和第10章再学习控制组件和复杂的容器。第9章 文字与图形GUI设计9.1.2 Applet的执行程序的执行程序 Applet是一种执行于Web浏览器的
6、小程序,是通过应用程序架构开发而得到的。在我们编写Web浏览器程序时,我们必须继承class Applet或class JApplet,必须覆盖必要的Applet 的成员方法,这些成员方法控制了Web页面上的applet的生成与执行。为此,有必要先介绍Applet应用程序的执行过程及其所引用的方法。我们编写的每个Applet小程序都是Applet类的子类,在实际运行中,浏览器在下载字节码的同时,会自动创建一个用户Applet子类的对象,并在适当事件发生时自动调用该对象的几个主要方法。下面说明这些方法及其引用过程。第9章 文字与图形GUI设计(1)init()方法。当Applet程序启动时自动调
7、用init()方法。init()方法仅用来做初始化操作。用户程序可以重载父类的init()方法,通过init()方法初始化图像文件、声音文件、字体或者其他一些对象等。(2)start()方法。Applet运行init()方法之后将自动调用start()方法,start()方法体现了小应用程序要完成的功能。我们可以重载父类的start()方法,在这个方法体内实现我们程序的功能。第9章 文字与图形GUI设计(3)paint()方法。它的主要作用是在Applet的界面中显示文字、图形和其他界面元素。浏览器调用paint()方法的事件主要有如下三种。当浏览器首次显示Applet时,会自动调用paint
8、()方法。当用户调整窗口大小或移动窗口时,浏览器会调用paint()方法。当repaint()方法被调用时,系统将首先调用update()方法将Applet对象所占用的屏幕空间清空,然后调用paint()方法重画。第9章 文字与图形GUI设计(4)stop()方法。当用户将浏览Applet程序所在的Web页面切换到其他页面时,浏览器会自动调用stop()方法,让Applet程序终止运行。如果用户又回到Applet程序所在的Web页面,则浏览器将重新启动Applet程序的start()方法。(5)destroy()方法。当用户关闭Applet程序窗口时,浏览器会自动执行此方法来结束程序,释放所占
9、资源。第9章 文字与图形GUI设计9.1.3 JApplet类类在Java的早期版本中,窗体、按钮等组件被列入java.awt包中。随着Java系统的不断改进和功能的增强,在1998年推出JDK1.2版本时,javax.Swing包被列入Java2的基础类库JFC(Java Fundation Classes)中。Swing扩展了AWT组件集,定义了相对于java.awt包的具有更多、更强功能的Swing GUI组件集。javax.Swing.JApplet是java.applet.Applet的子类,且具有如下继承关系:第9章 文字与图形GUI设计java.lang.Object java.
10、awt.Component java.awt.Container java.awt.Panel java.applet.Applet javax.swing.JApplet 第9章 文字与图形GUI设计9.1.4 Java 2D APIJava 2D API是Java用于开发二维图形的API。在Java的AWT和Swing类库中,提供了一些简单的二维图形处理功能。而Java 2D API则提供了强大灵活且独立于图形设备的二维图形处理功能,它是JFC的一个组成部分,它提供了处理二维图形、图像、文字等对象的统一机制和统一的图形转换机制。J2SDK提供的Java 2D API中的核心类和接口有:ja
11、va.awt、java.awt.geom、java.awt.font、java.awt.color、java.awt.image、java.awt.image.renderable及java.awt.print。第9章 文字与图形GUI设计Java 2D API在java.awt包中用于处理二维图形的类和接口有:AlphaComposite、BasicStroke、Color、Composite、CompositeCotext、Font、FontMetrics、GradientPaint、Graphics2D、GraphicsConfiguration、GraphicsEnvironment、
12、Paint、PaintContext、Point、Polygon、Rectangle、Shape、Stroke、TexturePaint及Transparency等。第9章 文字与图形GUI设计Java 2D API在java.awt.geom包中用于定义几何形状的类和接口有:Arc2D、Arc2D.Double、Arc2D.Float、Area、BasicTextUI.BasicCaret、CubicCurve2D、CubicCurve2D.Double、CubicCurve2D.Float、DefaultCaret、Ellipse2D、Ellipse2D.Double、Ellipse2D.
13、Float、GeneralPath、Line2D、Line2D.Double、Line2D.Float、Polygon、QuadCurve2D、QuadCurve2D.Double、QuadCurve2D.Float、Rectangle、Rectangle2D、Rectangle2D.Double、Rectangle2D.Float、RectangularShape、RoundRectangle2D、RoundRectangle2D.Double及RoundRectangle2D.Float。Java 2D API在其他一些包,如java.awt.font、java.awt.color、jav
14、a.awt.image、java.awt.image.renderable及java.awt.print中的类和接口请查阅Java 2D API帮助文档。第9章 文字与图形GUI设计9.1.5 与图形文字有关的类及其继承关系与图形文字有关的类及其继承关系图9.1给出了java.awt包层次的一部分有关文字、颜色和基本图形的类。图中的每一个类都是从类Object直接派生出来的。其中,类Font是用于操作字体的;类Color是用于操作颜色的;类BasicStroke用于创建图形形状轮廓;类Graphics用于绘制各种串、线、矩形、圆和其他几何图形;类Graphics2D则提供了绘制任意几何形状图形
15、的功能。第9章 文字与图形GUI设计BasicStrokeGraphicsObjectColorFontComponentGraphics 2D图9.1 java.awt包中常用的图形文字类(是由Object类派生的)第9章 文字与图形GUI设计9.1.6 Java 2D API坐标系统坐标系统应用Java 2D API绘制文本与图形时有两种坐标系,一种是与设备无关的逻辑坐标系,也称为用户坐标系;另一种是与设备(例如显示器、打印机等)有关的坐标系。Java 2D API具有自动转换两种坐标系的功能。在默认情况下,用户坐标系的原点在绘图表面的左上角,左上角坐标为(0,0),x坐标从左向右递增,y
16、坐标从上向下递增。当文本与图形在屏幕上输出时,坐标单位以像素来度量。我们给出的所有文本与图形都是相对于用户坐标系的。图9.2中的点p表示在用户坐标系中的位置。第9章 文字与图形GUI设计图9.2 Java用户坐标系统pY轴(0,0)X轴第9章 文字与图形GUI设计9.1.7 三种图形对象三种图形对象Graphics2D对象可以输出以下三种图形对象:(1)形状(shape)图形对象。它是一些几何图形类型,如矩形、椭圆、直线和曲线,每种形状对象实现Java.awt.Shape接口。(2)文本(text)图形对象。它可以按不同的字体、风格和颜色输出。(3)图像(image)图形对象。它是java.a
17、wt.image.BufferedImage类的对象。由于图像(image)的内容非常多,因此本章只讲述基础性形状和文本两类图形对象的绘制,偶尔也会用到一些图像的知识。第9章 文字与图形GUI设计9.1.8 Graphics2D对象的属性设置对象的属性设置Graphics2D对象通过其属性来封装绘图用的状态信息。因此,在绘制二维几何图形前,需要对图形对象的属性进行设置。Graphics2D对象提供了下面七个属性的设置和获得方法:(1)Paint属性:用来对要绘制的图形或文字的颜色进行设置。具体设置是通过它的成员方法setPaint()和getPaint()来实现的。例如,假设g2是Graphi
18、cs2D对象,可以用g2.setPaint(Color.green)语句设置g2的paint属性为绿色。(2)Stroke属性:通过setStroke()方法来控制图形轮廓线的形状。例如,用g2.setStroke(new BasicStroke(4)语句设置Graphics2D对象g2的图形轮廓线的宽度为4个像素。第9章 文字与图形GUI设计(3)Front属性:用于设置输出文本的字体。(4)Transformation属性:通过setTransform()方法来实现图形的缩放、旋转和移位等。(5)Composite rule属性:通过setComposite()方法来描述绘图操作如何与存在
19、的背景相复合。(6)Clipping space属性:通过setClip()方法来设置剪切区域(clip area),即它将绘图限制在一个设定的区域内,使绘图操作在这个区域外无效。(7)Rendering hints属性:通过setRenderingHints()方法来控制绘图的质量和速度。第9章 文字与图形GUI设计 9.2 绘绘 制制 文文 字字 9.2.1 绘制文字的成员方法绘制文字的成员方法由于字符串可以用字符串对象、字符数组、字节数组这三种不同形式表示,故Java在Graphics类中相应地提供了三个成员方法来绘制这三种不同形式的字符串(见表9.1)。第9章 文字与图形GUI设计表9
20、.1 绘制字符和字符串的成员方法 成 员 方 法 参 数 说 明 功 能 drawStringString string,int x,int y string 是字符串对象;x,y是起始坐标 以坐标 x,y 为起始位置,用当前的字体和颜色绘制 string代表的字符串 drawCharschar ch,int offset,int number,int x,int y ch 是字符数组名;offset 是要绘制的第一个字符在数组中的下标;number 是要绘制的字符个数;x,y 是起始坐标 从 ch 数组下标为 offset 的位置开始截取number 个字符,从坐标 x,y 处开始用当前的字
21、体和颜色绘制 number 个字符 drawBytes byte by,int offset,int number,int x,int y by 是字节数组名;offset 是要绘制的第一个字符在数组中的下标;number 是要绘制的元素个数;x,y 是起始坐标 从by 数组下标为offset 的位置开始取 number 个字节,从坐标 x,y 处开始用当前的字体和颜色绘制 number 个字符 第9章 文字与图形GUI设计表9.2 绘制字符的常用成员方法 成 员 方 法 参 数 说 明 功 能 drawStringString s,int x,int y s 是字符串对象;x,y为整型的起始
22、坐标 以坐标 x,y 为起始位置,用当前的字体绘制string代表的字符串 drawStringString s,fload x,fload y s 是字符串对象;x,y为浮点型的起始坐标 以坐标 x,y 为起始位置,用当前的字体绘制string代表的字符串 第9章 文字与图形GUI设计【示例程序c9_1.java】使用Graphics类的三个成员方法绘制“WELCOME TO XIAN”。import java.applet.*;import java.awt.*;import javax.swing.*;public class c9_1 extends JApplet private S
23、tring s=WELCOME!;private char c =T,O,a,e,t;private byte b =d,4,X,I,047,A,N;第9章 文字与图形GUI设计public void paint(Graphics g)/覆盖Applet的成员方法 g.drawString(s,50,25);g.drawChars(c,0,2,50,50);g.drawBytes(b,2,5,50,75);第9章 文字与图形GUI设计 在这个程序中,为了学习使用绘制字符和字符串的三个成员方法,我们分别定义了一个字符串对象s、一个字符数组c和一个字节数组b,分别用于保存三行文字内容。最后,我们通
24、过覆盖JApplet类的paint()方法,并在这个方法中引用绘制字符和字符串的成员方法实现了文字的绘制。该程序的运行结果见图9.3。第9章 文字与图形GUI设计图9.3 程序c9_1的运行结果 第9章 文字与图形GUI设计【示例程序c9_2.java】使用Graphics2D类的成员方法绘制“WELCOME TO XIAN”。import java.applet.*;import java.awt.*;import javax.swing.JApplet;public class c9_2 extends JApplet private String s=WELCOME!;private c
25、har c =T,O,a,e,t;private byte b =d,4,X,I,047,A,N;public void paint(Graphics g)第9章 文字与图形GUI设计 /为保证方法可以访问绘图环境的全部功能,把g强制转换成Graphics2D Graphics2D g2=(Graphics2D)g;g2.drawString(s,50,25);g2.drawChars(c,0,2,50,50);/Graphics2D是Graphics的子类,可以继承Graphics类的方法 g2.drawBytes(b,2,5,50,75);第9章 文字与图形GUI设计9.2.2 Font类
26、类 1.Font类的构造方法类的构造方法Font类用来描述字体的名称(Name)、大小(Size)和样式(Style)。使用Font类的构造方法创建一个Font类的对象,其格式如下:Font(String fontname,int style,int size)其中:fontname为字型名,如宋体、黑体、楷体、Arial、Courier、TimesRoman、Helvetica等;style为字体样式,如粗体(BOLD)、斜体(ITALIC)、正常体(PLAIN);Size为用像素点表示的字体大小。第9章 文字与图形GUI设计2.Font类的成员方法类的成员方法创建一个Font类对象后,就可
27、以使用Font类提供的成员方法来获取字体、字型等方面的信息。Font类提供的常用成员方法如表9.3所示。表表9.3 java.awt.Font类方法类方法 成 员 方 法 功 能 说 明 public static Font decode(String str)使用传递进来的名称获得指定的字体 public string getFamily()获得指定平台的字体名 public string getName()获得字体的名称 public int getStyle()获得字体的样式 public int getSize()获得字体的大小 public string toString()将此对象
28、转换为一个字符串表示 第9章 文字与图形GUI设计3.设置字体可以用java.awt.Graphics类的成员方法来设置自己希望使用的字体,其格式如下:setFont(Font myFont);第9章 文字与图形GUI设计4.自定义字体绘制文字的步骤自定义字体绘制文字的步骤自定义字体绘制文字的步骤如下:(1)创建Font类对象,指定字体名、字体样式及字体大小;(2)使用.setFont()设置创建好的Font类对象;(3)调用drawString()方法绘制文字。第9章 文字与图形GUI设计【示例程序c9_3.java】使用不同的字体绘制文字。import java.applet.*;impo
29、rt java.awt.*;import javax.swing.JApplet;public class c9_3 extends JApplet Font f1=new Font(TimesRoman,Font.BOLD,16);/字体为TimesRoman,字体样式加粗 Font f2=new Font(Courir,Font.ITALIC,24);/字体为Courir,字体样式倾斜 Font f3=new Font(Helvetica,Font.PLAIN,14);/常规 String hStr=Courir;第9章 文字与图形GUI设计public void paint(Graphi
30、cs g)Graphics2D g2=(Graphics2D)g;g2.setFont(f1);g2.drawString(TimesRoman,20,50);g2.setFont(f2);g2.drawString(hStr,20,100);g2.setFont(f3);g2.drawString(Helvetica,20,150);第9章 文字与图形GUI设计图94 程序c8_3的运行结果第9章 文字与图形GUI设计【示例程序c9_4.java】获取字体信息。import java.applet.Applet;import java.awt.Graphics;import java.awt
31、.Font;public class c8_3 extends Applet Font f=new Font(Courier,Font.ITALIC+Font.BOLD,24);/字体样式倾斜加粗 public void paint(Graphics g)Graphics2D g2=(Graphics2D)g;int style,size;第9章 文字与图形GUI设计 String s,name;g2.setFont(f);style=f.getStyle();/得到字体样式 if(style=Font.PLAIN)s=Plain;else if(style=Font.BOLD)s=Bold;
32、else if(style=Font.ITALIC)s=Italic;else s=Bold italic;size=f.getSize();/得到字体大小 s+=size+point;name=f.getName();/得到字体名称 s+=name;g2.drawString(s,10,50);第9章 文字与图形GUI设计图9.5 程序c9_4的运行结果第9章 文字与图形GUI设计9.3 Color 类类9.3.1 Color类的构造方法类的构造方法表表9.4 java.awt.Color 类的构造方法类的构造方法构 造 方 法 功 能 说 明 public Color(int r,int
33、g,int b)使用在 0255 范围内的整数指定红、绿和蓝三种颜色的比例来创建一种 Color 对象 public Color(float r,float g,float b)使用在 0.01.0 范围内的浮点数指定红、绿和蓝三种颜色的比例来创建一种 Color 对象 public Color(int rgb)使用指定的组合 RGB 值创建一种 Color 对象 第9章 文字与图形GUI设计 不论使用哪个构造方法来创建Color对象,都需要指定新建颜色中的R(红)、G(绿)、B(蓝)三色的比例。Java提供的这三个构造方法用不同的方式确定RGB的比例,可以使编程者从256256256(约16
34、 000 000)种颜色中进行选择。一个RGB值由三部分组成:第一个RGB部分定义红色的量;第二个RGB部分定义绿色的量;第三个RGB部分定义蓝色的量。RGB值中某一部分的值越大,那种特定颜色的量就越大。第9章 文字与图形GUI设计9.3.2 Color类数据成员常量类数据成员常量 用户除了可以使用构造方法指定Color的RGB值外,Java还对一些常用的颜色提供了如表9.5所示的Color类数据成员常量。第9章 文字与图形GUI设计表表9.5 Color类类static数据成员常量和数据成员常量和RGB值值颜色数据成员常量 颜 色 RGB 值 public final static Colo
35、r red 红 255,0,0 public final static Color green 绿 0,255,0 public final static Color blue 蓝 0,0,255 public final static Color black 黑 0,0,0 public final static Color white 白 255,255,255 public final static Color yellow 黄 255,255,0 public final static Color orange 橙 255,200,0 public final static Color
36、 cyan 青蓝 0,255,255 public final static Color magenta 洋红 255,0,255 public final static Color pink 淡红色 255,175,175 public final static Color gray 灰 128,128,128 public final static Color lightGray 浅灰 192,192,192 public final static Color darkGray 深灰 64,64,64 第9章 文字与图形GUI设计9.3.3 Color类的成员方法类的成员方法表表9.6 J
37、ava.awt.Color类成员方法类成员方法成 员 方 法 功 能 说 明 public int getRed()获得对象的红色值 public int getGreen()获得对象的绿色值 public int getBlue()获得对象的蓝色值 public int getRGB()获得对象的 RGB 值 public Color brighter()获取此颜色的一种更亮版本 public Color darker()获取此颜色的一种更暗版本 第9章 文字与图形GUI设计 此外,还可以用java.awt.Graphics2D类的方法设定颜色或获取颜色。这些方法及其功能如下:setBack
38、ground(Color c):设定背景颜色,c代表颜色。getPaint():获取当前所使用的颜色。setPaint(new Color(int r,int g,int b):设定前景颜色的另一个方法。setPaint(Color c):设定前景颜色,c代表颜色。setColor(new Color(int r,int g,int b):设定前景颜色的另一个方法,c代表颜色。第9章 文字与图形GUI设计9.3.4 应用举例应用举例【示例程序c9_5.java】设置字符颜色。import java.applet.*;import java.awt.*;import javax.swing.JA
39、pplet;public class c9_5 extends JApplet public void paint(Graphics g)Graphics2D g2=(Graphics2D)g;int red,green,blue;第9章 文字与图形GUI设计 red=255;blue=255;green=0;g2.setPaint(new Color(red,green,blue);/设置前景颜色 setBackground(Color.cyan);/设置背景颜色 g2.drawString(Welcome to Xi047an,25,75);showStatus(Current RGB:+
40、g2.getPaint().toString();/状态行显示绘图文字颜色信息 第9章 文字与图形GUI设计图9.6 程序c9_5的运行结果 第9章 文字与图形GUI设计 9.4 绘制形状图形绘制形状图形 9.4.1 绘制几何图形的方法与步骤绘制几何图形的方法与步骤java.awt.geom包中定义了许多实现几何图形的类,这些类可以创建几何图形对象,然后通过Graphics2D类的对象可以显示这些几何图形。有两种绘制几何图形的方法:一种是使用draw()方法绘制图形轮廓;另一种是使用fill()方法绘制内部填充的几何图形。第9章 文字与图形GUI设计轮廓几何图形的绘制步骤如下:(1)创建一个G
41、raphics2D类的对象;(2)创建一个几何形状类geom的对象shape;(3)按要求设置Graphics2D的属性;(4)调用Graphics2D类的对象的draw(shape)方法绘制几何图形。绘制内部填充的几何图形也可分为4步,其中前3步与轮廓几何图形的绘制步骤相同,只是在第4步中调用的是Graphics2D类的对象的fill(shape)方法。第9章 文字与图形GUI设计9.4.2 绘制线段与矩形绘制线段与矩形线段与矩形是最常用的几何图形之一,Java2D API中提供了绘制直线、二次曲线、三次曲线、平面矩形、圆角矩形等图形的构造方法,如表9.7所示。在这些方法中,绘制圆角矩形除了
42、要指定矩形区域外,还需要指明圆角的弧宽(arcw)和弧高(arch)。第9章 文字与图形GUI设计表9.7 绘制线段与矩形用到的构造方法 构 造 方 法 功能 图 示 说 明 Point2D.Float(float x,float y)Point2D.Double(double x,doubley)创建点 对象 x,y 为点坐标 Line2D.Float(float x1,float y1,float x2,float y2)Line2D.Double(double x1,double y1,double x2,double y2)Line2D.Float(Point2D p1,Point2D
43、 p2)Line2D.Double(Point2D p1,Point2D p2)创建直线对象 起点(x1,y1)P1终点(x2,y2)P2 QuadCurve2D.Float(float x1,float y1,float ctrlx,float ctrly,float x2,float y2)QuadCurve2D.Double(double x1,double y1,double ctrlx,double ctrly,double x2,double y2)创建二次曲线对象(x1,y1)(x2,y2)(ctrlx,ctrly)第9章 文字与图形GUI设计CubicCurve2D.Float
44、(float x1,float y1,float ctrlx1,float ctrly1,float ctrlx2,float ctrly2,float x2,float y2)CubicCurve2D.Double(double x1,double y1,ouble ctrlx1,double ctrly1,double ctrlx2,double ctrly2,double x2,double y2)创建三次曲线对象(x1,y1)(ctrlx1,ctrly1)(x2,y2)(ctrlx2,ctrly2)Rectangle2D.Float(float x,float y,float widt
45、h,float height)Rectangle2D.Double(double x,double y,double width,double height)创建矩形对象 height(x,y)width RoundRectangle2D.Float(float x,float y,float width,float height,float arcw,float arch)RoundRectangle2D.Double(double x,double y,double width,double height,double arcw,double arch)创建圆角矩形对象 widthheig
46、htarcwarch(x,y)BasicStroke(float width)画笔样式对象 绘制图形形状轮廓的画笔样式,参数 width 表示线的宽度 第9章 文字与图形GUI设计 【示例程序c9_6.java】在窗体上绘制直线、二次曲线及三次曲线。import java.applet.*;import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import javax.swing.*;class drawPanel extends JPanel public void paint(Graphics g)Graphics
47、2D g2=(Graphics2D)g;第9章 文字与图形GUI设计 Line2D.Double Line1=new Line2D.Double(20.0,20.0,80.0,40.0);QuadCurve2D.Double Line2=new QuadCurve2D.Double(130.0,30.0,150.0,50.0,170.0,20.0);CubicCurve2D.Double Line3=new CubicCurve2D.Double(220.0,40.0,240.0,60.0,260.0,20.0,300.0,35.0);g2.setPaint(Color.red);/设置前景颜
48、色 g2.draw(Line1);g2.draw(Line2);g2.draw(Line3);第9章 文字与图形GUI设计public class c9_6 public c9_6()JFrame.setDefaultLookAndFeelDecorated(true);/设置窗体图标显示为默认方式 JFrame f=new JFrame(draw Line);/创建窗体对象 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/点击窗口关闭图标关闭窗口 drawPanel pa=new drawPanel();/创建容器JPanel类的对象 pa
49、.setPreferredSize(new Dimension(350,100);/设置JPanel类对象的大小 Container cp=f.getContentPane();/创建JFrame的容器对象 第9章 文字与图形GUI设计 pa.setBackground(Color.cyan);/设置pa对象的背景颜色 /cp容器的布局为BorderLayout,添加pa到cp容器中并居中 cp.add(pa,BorderLayout.CENTER);f.pack();/调整窗口 f.setVisible(true);/设置窗口为可见 public static void main(Strin
50、g args)new c9_6();第9章 文字与图形GUI设计图9.7 程序c9_6的运行结果 第9章 文字与图形GUI设计【示例程序c9_7.java】绘制各种矩形。import java.applet.*;import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import javax.swing.*;public class c9_7 extends JApplet public void paint(Graphics g)Graphics2D g2=(Graphics2D)g;g2.setPaint(Color