收藏 分享(赏)

Java语言程序设计-基础篇-中文ppt-第十五章.ppt

上传人:guanlirenli 文档编号:3206932 上传时间:2018-10-07 格式:PPT 页数:32 大小:634KB
下载 相关 举报
Java语言程序设计-基础篇-中文ppt-第十五章.ppt_第1页
第1页 / 共32页
Java语言程序设计-基础篇-中文ppt-第十五章.ppt_第2页
第2页 / 共32页
Java语言程序设计-基础篇-中文ppt-第十五章.ppt_第3页
第3页 / 共32页
Java语言程序设计-基础篇-中文ppt-第十五章.ppt_第4页
第4页 / 共32页
Java语言程序设计-基础篇-中文ppt-第十五章.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、1,第15章 图 形,2,动 因,假设你希望画出如图所示的像条形图、时钟或停止符这样的图形,如何才能做到呢?,3,学习目标,描述GUI组件中的Java坐标系(第15.2节)。 使用Graphics类中的方法画图 (第15.3节)。 覆盖paintComponent方法在GUI组件上绘图 (第15.3节)。 使用面板作画布来绘图 (第15.3节)。 绘制字符串、直线、矩形、椭圆、弧形和多边形等 (第15.4、 15.6-15.7节)。 使用FontMetrics获取字体属性并且了解如何将消息居中(第15.8节)。 在GUI组件中显示一个图像 (第15.11节)。 开发可重用的GUI组件Figur

2、ePanel、MessagePanel、StillClock和ImageViewer (第15.5、15.9、15.10、15.12节)。,4,Java坐标系,5,每个GUI组件都有自己的坐标系,6,Graphics类,Graphics类中提供了绘制字符串、直线、矩形、椭圆、弧形、多边形和折线段的方法。,7,paintComponent举例,为了在组件上绘图,需要定义一个扩展JPanel的类,并且覆盖它的paintComponent方法来表示绘制什么。使用paintComponent重写这章的第一个程序。,TestPaintComponent,Run,8,绘制几何图形,绘制字符串 绘制直线 绘

3、制矩形 绘制椭圆 绘制弧形 绘制多边形,9,绘制字符串,drawLine(int x1, int y1, int x2, int y2);,drawString(String s, int x, int y);,10,绘制矩形,drawRect(int x, int y, int w, int h);fillRect(int x, int y, int w, int h);,11,绘制圆角矩形,drawRoundRect(int x, int y, int w, int h, int aw, int ah); fillRoundRect(int x, int y, int w, int h,

4、int aw, int ah);,12,绘制椭圆,drawOval(int x, int y, int w, int h); fillOval(int x, int y, int w, int h);,13,实例学习:FigurePanel类,这个例子开发可以显示各种图形的非常有用的类。这个类允许用户设置图的类型、指定是否填充该图形以及是否在面板上显示这个图形。,FigurePanel,14,测试FigurePanel,这个例子开发可以显示各种图形的非常有用的类。这个类允许用户设置图的类型、指定是否填充该图形以及是否在面板上显示这个图形。,TestFigurePanel,Run,15,绘制弧形

5、,drawArc(int x, int y, int w, int h, int angle1, int angle2); fillArc(int x, int y, int w, int h, int angle1, int angle2);,角的单位 是度,16,绘制弧形举例,DrawArcs,Run,17,绘制多边形和折线段,int x = 40, 70, 60, 45, 20; int y = 20, 40, 80, 45, 60; g.drawPolygon(x, y, x.length);,g.drawPolyline(x, y, x.length);,18,使用Polygon类绘

6、制多边形,Polygon polygon = new Polygon();polygon.addPoint(40, 59);polygon.addPoint(40, 100);polygon.addPoint(10, 100);g.drawPolygon(polygon);,19,绘制多边形举例,DrawPolygon,Run,20,使用FontMetrics类居中显示字符串,可以在一个面板的任何位置显示一个字符串。可以居中显示它吗?要想做到这一点,需要使用FontMetrics类,对特定字体的字符串测量出确切的宽度和高度。FontMetrics可以测量给定字体的以下属性:,public in

7、t getAscent() public int getDescent() public int getLeading(),getAscent(),getLeading(),getDescent(),getHeight(),public int getHeight() public int stringWidth(String str),21,FontMetrics类,FontMetrics是一个抽象类。要得到某种特定字体的FontMetrics对象,可以使用定义在Graphics类中的以下getFontMetrics方法: public FontMetrics getFontMetrics(

8、Font f)返回指定字体的字体尺寸。 public FontMetrics getFontMetrics()返回当前字体的字体尺寸。,22,TestCenterMessage,Run,23,实例学习:MessagePanel类,MessagePanel,Run,本实例开发一个有用的类,它可以在面板中显示一条消息。这个类允许用户设置消息的位置、居中放置消息的位置、居中放置消息、使用指定间距移动消息。,TestMessagePanel,24,实例学习:StillClock类,DisplayClock,Run,StillClock,25,绘制时钟,xEnd = xCenter + handLeng

9、th sin() yEnd = yCenter - handLength cos(),由于一分钟有60秒,所以秒钟的角度是: second (2/60),26,绘制时钟(续),xEnd = xCenter + handLength sin() yEnd = yCenter - handLength cos(),分钟的位置是由分钟数和秒数决定。和秒一起计算的精确分钟值是minute + second/60。例如:如果时间是3分30秒,那么总的分钟数是3.5。由于一小时有60分钟,所以分钟的角度是 (minute + second/60) (2/60),27,绘制时钟(续),xEnd = xCen

10、ter + handLength sin() yEnd = yCenter - handLength cos(),由于一圈被分为12小时,所以时钟的角度是 (hour + minute/60 + second/(60 60) (2/12),28,显示图像图标,你已经学习了如何创建图像图标以及如何在标签和按钮上显示它们。例如:下面的语句创建一个图像图标并在标签上显示它:ImageIcon icon = new ImageIcon(“image/us.gif“); JLabel jlblImage = new JLabel(imageIcon);图像图标显示一个尺寸固定的图像。为了显示大小灵活的图

11、像,需要使用java.awt.Image类。可以使用getImage()方法从一个图像图标中创建一个图像,如下所示:Image image = imageIcon.getImage();,29,显示图像,使用标签作为显示图像的区域比较简单、方便,但是你对如何显示图像没有多少控制权。更加灵活的显示图像的方式就是在面板上使用Graphics类的drawImage方法。drawImage方法的四个版本如图所示:,30,显示图像举例,这个例子给出显示来自image/us.gif的图像的代码。文件image/us.gif在类目录下。程序中从文件创建Image,drawImage方法显示填充整个面板的图像,如图所示:,Run,DisplayImage,31,实例学习:ImageViewer类,显示图像是Java程序设计的一个常用任务。这个实例学习会开发一个名为ImageViewer的可重用组件,它在面板上显示一个图像。ImageViewer类包括属性image、imageFilename、stretched、xCoordinate和yCoordinate。,32,ImageView举例,这个例子使用ImageView类创建六个image对象,Run,SixFlags,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报