1、L08 图形处理与appletL8 图形处理与Applet上机手册1. 内容回顾(3-5分钟)回顾本讲内容?不要照搬ppt中的课程目标,应该体现自己的水平窗体绘图主要用到那几个方法?它们之间的相互调用过程是什么样的?如何修改窗体中的字体?Toolkit类的作用是什么?提供了那些耗用的方法Graphics类中提供了那些常用的画图方法?什么是Applet?Applet的生命周期是什么?如何在网页中显示Applet功能?2. 上机目标列出本讲通过上机应该掌握的内容,达到什么要求,不要照搬ppt中的大纲掌握gui中窗体绘图方法的实现,并理解三个方法之间的调用过程掌握Toolkit类中的常用方法掌握cl
2、asspath环境变量的使用体验java小应用程序的开发流程,编译并运行掌握如何使用注释及通过注释生成帮助文档3. 上机任务列出本讲的所有上机题目,包括指导练习、课堂练习、课外练习创建一个Frame,设置该Frame的背景颜色为黄色Yellow, 设置Title为“画线和字符串示例”。(30分钟)实现一个Applet,在该Applet中有两个按钮,分别为“变圆”、“变方”,当我们按按钮后,界面中的图形也会随着发生变化(30分钟)使用线程与画图实现字符串自屏幕右向左移动(20分钟)如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实
3、现(40分钟)实现五子棋的功能,且鼠标左键下棋,鼠标右键是悔棋,但双方最多只能悔三步棋?4. 指导练习带领学员完成的练习,如安装配置、知识点练习、重点难点4.1. 创建一个Frame,设置该Frame的背景颜色为黄色Yellow, 设置Title为“画线和字符串示例”说明解答步骤,每步的含义及解析1. 创建一个Frame,设置该Frame的背景颜色为黄色Yellow, 设置Title为“画线和字符串示例”:程序运行效果如下 2. 技术分析总体上来说界面还是一个Framen a.通过setBackground(Color.YELLOW)方法来实现设置窗体背景色n b.通过重写paint()方法来
4、画直线与写字符串n c.通过Graphics类中的drawString(str,x,y)方法写字符串n d.通过Graphics类中的drawLine(x1,y1,x2,y2)方法画线3. 参考代码import java.awt.*;public class DrawLineStr extends Frame public DrawLineStr() super(画线和字符串示例); this.setSize(180,160); this.setBackground(Color.YELLOW); this.setVisible(true); public void paint(Graphics
5、 g) g.drawString(这是一个字符串,20,40); g.drawString(这是一个条线段,20,150); g.drawLine(10,150,150,10); public static void main(String args) new DrawLineStr(); 4. 功能扩充将该程序补充完整,实现窗口关闭事件4.2. 实现一个Applet,在该Applet中有两个按钮,分别为“变圆”、“变方”,当我们按按钮后,界面中的图形也会随着发生变化1. 运行效果如下2. 技术分析a.本要求是要实现一个Applet,所以必须自己创建的类必须继承Applet。b.通过触发按钮来
6、实现图形的变化,所以在实现中需要通过gui的事件处理机制,我们可以选择在按钮的基础上实现监听来实现。当然最简单的就是实现ActionListener接口,并实现actionPerformed方法;c.如何在窗体中改变显示的图片?这个需要让图形重新绘画自己,我们可以使用paint()方法来让窗体重新绘画3. 参考代码import java.awt.*;import java.applet.*;import java.awt.event.*;import java.awt.event.ActionListener;import java.util.EventListener;public clas
7、s AppletApp extends Applet implements ActionListener String drawing; Button button1; Button button2; public void init() drawing=; button1=new Button(变圆); button2=new Button(变方); this.setLayout(new FlowLayout(); this.add(button1); this.add(button2); /this.setBackground(Color.red); public void start()
8、 button1.addActionListener(this); button2.addActionListener(this); /* * 重写paint()方法,实现页面重写 */ public void paint(Graphics g) if(drawing.equals(circle) g.drawOval(50,50,80,80); if(drawing.equals(fang) g.drawRect(50,50,80,80); /* * 实现按钮监听 */ public void actionPerformed(ActionEvent e) if(e.getSource()=b
9、utton1) drawing=circle; this.repaint(); if(e.getSource()=button2) drawing=fang; this.repaint(); 4. 扩充知识我们在前面第一次课的时候已经给大家举过一次使用applet的例子,我们说过applet是java小应用程序,而且java小应用程序是一般都是在网页中运行的,如何将一个applet运行在html页面中?这个就需要在html页面中使用标签来实现。如下代码,将该程序保存为applet.html文件,运行后,可以在页面中来看到运行的效果 在此处有有两点需要指出:a. code 指定的是要加载的cla
10、ss文件;所以必须是类名.clss;b. 原程序中没有指定包名,所以此处的code也不需要包名,且编译后生成的class文件与html文件放在一个目录下4.3. 使用线程与画图实现字符串自屏幕右向左移动1. 使用线程与画图实现字符串自屏幕右向左移动,运行效果如下2. 技术分析a. 从上图的运行效果我们可以看出,移动的字符串内容是没有变化的,只是相对位置发生了变化;b. 如何在截面中显示字符串,我们在前面已经可以使用g.drawString(s,x,y)来实现;c. 如何动态从右向左变化?其实只是让x坐标定时发生变化而已,y坐标不变。那如何定时发生变化?我们可以使用线程类实现。还记得Thread
11、.sleep(100)这个方法吗,可以让程序暂时停止运行0。1秒。3. 参考代码import java.awt.*;public class TestMove extends Frame int x = 160, y = 80; public TestMove() super(字符串动画); this.setBackground(Color.yellow); this.setSize(180, 160); public void paint(Graphics g) g.setColor(Color.red); g.drawString(This is a test of String move
12、., x, y); try /休眠100毫秒 Thread.sleep(100); catch (Exception e) /x坐标减10,即向左移动 x -= 10; if (x -160) x = 160; /重新绘画 repaint(); public static void main(String args) new TestMove().setVisible(true); 4. 功能扩展根据上面的提示代码,自己动手,做个复杂点的功能,并能在html页面中运行5. 课堂练习在上机课由学员自己完成的练习,一般需要给出思路、步骤、重点代码5.1. 如果要设计一个图形系统,请你设计基本的图形
13、元件(Point,Line,Rectangle,Triangle)的简单实现1. 本题考察如下几个编程思想:1)如何使用Graphics进行基本的画图2)如果是在一个系统中来实现,那么我们需要将这些常用的方法进行简单的封装,这样可以重用;例如作成可重用组件的方法3)如果只是个小型系统或功能,我们可以使用鼠标直接在画板上来实现;这样我们需要实现鼠标事件/ 画点 :没有直接画点的方法,但如果将直接的开始与结束坐标一样就是一个点g.drawLine(startX, startY, startX, startY); / 画线g.drawLine(startX, startY, endX, endY);
14、/ 画矩形g.drawRectint x, int y, int width, int height)那么在我们的实现中,矩形的长度=endX - startX ; 宽度=endY - startYg.drawRect(startX, startY, endX - startX, endY - startY); / 画三角没有直接画三角的方法,但三角就是三条首尾相连的线组成的g.drawLine(xa, ya, xb, yb);g.drawLine(xb, yb, xc, yc);g.drawLine(xc, yc, xa, ya);2. 部分参考代码a. 在Applet上实现画图,并根据鼠标
15、的起落来实现坐标的值b. 初始化坐标c. 判断鼠标的操作d. 纪录鼠标松开时候的坐标e. 重写panit方法f. 重写update方法,调用paint()方法g. 其他辅助方法h. 启动运行6. 课外练习由学员课后完成,如花时间较长的题目,面试题,项目中的功能,扩展性内容6.1. 实现五子棋的功能,且鼠标左键下棋,鼠标右键是悔棋,但双方最多只能悔三步棋?。7. 常见问题根据教学或自己备课过程中常碰到的问题及其解决方法7.1. 小应用程序和Application有什么区别小应用程序指的是applet , applet一般是嵌套在html或jsp中的,作为web项目的客户端使用.Application是应用程序(项目),可独立运行的.两者最主要的区别是运行环境不同。8. 相关知识提供与本讲内容的某些知识点相关的参考资料或扩展内容与技术8.1. 无。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1