2021年Java画图软件设计报告_第1页
2021年Java画图软件设计报告_第2页
2021年Java画图软件设计报告_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、佛山科学技术学院可视化编程技术课程设计报告画图软件设计学生姓名周敏婷学号211914123年级专业11级教育技术学2班指导老师容汝佳学院教育科学学院广东佛山提交日期213年6月目录 前言 (2)2概要设计 (3)1 开发环境 (3)2 画图软件功能 (3)3 界面设计 (3)4 类的框架结构图 (4) 详细设计 (4)1 使用的java类的说明 (4)2 类的主要方法 (5)1 颜色选择器 (5)2 控制画笔样式 (5)3 选取颜色按钮的监听件类 (6)4 设计总体认识 (6)5 程序流程图 (7) 运行结果 (7) 测试分析 (8)1 程序运行情况 (8) 源程序 (8)参考文献 (14)设

2、计总结 (14)摘要该程序是一个图形界面的简单的java画图软件,具有良好的界面,使用人员能快捷简单地进行操作。该画图软件操作较为简单,只需要一直按着左键就能根据你鼠标移动的方面,画出你想要的图案。你也可以选择你自己想到的颜色和画笔的粗细。而且可以显示你当前的画笔的状态。界面为灰白对称。是一个非常简单的作图工具,让人能轻松上手。关键字java,画图类,方法,事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了java语言之后,我决定使用java语言编写一个简单的画图工具,可以实现简单的画图作图功能,满足日常

3、基本的工作学习和娱乐需要。java是由sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,java已成为当今internet上最流行、最受欢迎的一种程序开发语言。java开发小组把java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。java基本版本叫java 2标准版(java 2 standard edition,j2se),它包含建立java应用程序或者是applet所需的应用程序编程接口(api)。java 2移动版(the java 2 mobile e

4、dition,j2me)包含创建无线java应用程序的api。还有java 2企业版(the java 2 enterprise,j2ee)是j2se的增强版本,包含建立多层架构应用程序api。java语言是由c+语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。java 语言去掉了c+语言的一些容易引起错误的特性。java语言的特点有面向对象、跨平台、安全性、多线程和图形功能强。2 概要设计1开发环境开发平台microsoft windows xp professional service pack 2开发工具jbuilder

5、27 + jdk _22画图软件功能功能1按着鼠标左键能随心所欲的画出想要的图形功能2可自助地选择画笔的粗细功能3可自助地颜色选择功能4可以显示你当前的画笔状态3界面设计图3 画图面板4类的框架结构图drawpane属性package kasa;操作public class drawpane extends frameclass buttoncoloraction implements actionlistenerc lass buttoncursor extends mouseadapterclass buttonstrokeaction implements actionlistenerc

6、lass palette extends panel implements mouselistener,mousemotionlistener图43详细设计1画图软件使用的java类的说明类名drawpane类作用主类,继承的父类 frame类,构造方法drawpane()实现了放各种组件,界面的构造,构造画图板颜色选择器和画笔的粗细等功能类名buttoncoloraction 实现的接口actionlistener作用选取颜色按钮的监听事件类监听按钮动作类名buttoncursor作用鼠标进入按钮变换光标样式监听事件类继承的类mouseadapter 继承了鼠标的适配器类名buttonstr

7、okeaction作用设置画笔的监听事件类实现的接口actionlistener 作用选取颜色按钮的监听事件类监听按钮动作类名palette 继承的父类panel类作用画板类实现的接口mouselistener, mousemotionlistener 重写了鼠标监听器的五个方法mousemoved(mouseevent e)、mousedragged(mouseevent e)、mouseexited(mouseevent e)、mouseentered(mouseevent e)和mousereleased(mouseevent e)。同时实现了mousemotionlistener接口,

8、调用addmousemotionlistener(this)方法对鼠标的动作进行监听2类的主要方法1 颜色选择器panel pane=new panel(new gridlayout(2, 1); / 画笔颜色选择器panel panecolor=new panel(new gridlayout(1, 13); / 12 个颜色选择按钮button buttoncolor=new button12;color color= color.black, color.blue, color.cyan, color.darkgray,color.gray, color.green, color.mag

9、enta, color.orange,color.pink, color.red, color.white, color.yellow; / 显示当前颜色的面板2控制画笔样式panel panestroke=new panel(new gridlayout(1, 13); / 控制画笔样式buttonstrokeaction=new buttonstrokeaction();button buttonstroke=new button11;buttonstroke=new button(1);buttonstroke1=new button(3);buttonstroke2=new butto

10、n(5);buttonstroke3=new button(7);buttonstroke4=new button(9);buttonstroke5=new button(11);buttonstroke6=new button(13);buttonstroke7=new button(15);buttonstroke8=new button(17);buttonstroke9=new button();buttonstroke1=new button();drawwidth=new label(颜色, label.center);drawcap=new label(, label.cente

11、r);drawwidth.setbackground(color.lightgray);drawcap.setbackground(color.lightgray);panestroke.add(drawwidth);3选取颜色按钮的监听事件类class buttoncoloraction implements actionlistener public void actionperformed(actionevent e) colorcolor_temp=(button) e.getsource().getbackground();noncecolor.setbackground(color

12、_temp);palette.setcolor(color_temp);4设计的总体认识ja v a设计的摘要ja v a设计的目录结构ja v a设计的概要和详细设计ja v a设计的版权意识ja v a设计需要编译的环境ja v a设计的实用性5程序流程图开始图3绘制画图软件方法pad图4运行结果图4 画图软件结果显示粗细选择颜色选择绘图绘图5测试分析1程序运行情况:当运行程序的时候,你可以进入界面,单击你所需要的颜色和画笔的粗细来进行作图。当你觉得你对你的画不满意的时候,你可以选择白色来清除你的画面。6 程序清单package kasa;import java.awt.basicstro

13、ke;import java.awt.borderlayout;import java.awt.button;import java.awt.color;import java.awt.cursor;import java.awt.dimension;import java.awt.frame;import java.awt.graphics;import java.awt.graphics2d;import java.awt.gridlayout;import import java.awt.panel;import java.awt.renderinghints;import java.a

14、wt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;import java.awt.event.mouselistener;import java.awt.event.mousemotionlistener;import java.awt.event.windowadapter;import java.awt.event.windowevent;import java.awt.image.buff

15、eredimage;public class drawpane extends frame / 画板private palette palette=null; / 显示当前颜色的面板private panel noncecolor=null; / 画笔粗细private label drawwidth=null; / 画笔端点的装饰private label drawcap=null; / 选取颜色按钮的监听事件类private buttoncoloraction buttoncoloraction=null;/ 鼠标进入按钮后光标样式的监听事件类private buttoncursor bu

16、ttoncursor=null; / 画笔样式的监听事件private buttonstrokeaction buttonstrokeaction=null;public drawpane() / 设置标题栏文字super(java版画图小工具); / 构造一个画图板palette=new palette();panel pane=new panel(new gridlayout(2, 1); / 画笔颜色选择器panel panecolor=new panel(new gridlayout(1, 13); / 12 个颜色选择按钮button buttoncolor=new button12

17、;color color= color.black, color.blue, color.cyan, color.darkgray,color.gray, color.green, color.magenta, color.orange,color.pink, color.red, color.white, color.yellow; / 显示当前颜色的面板noncecolor=new panel();noncecolor.setbackground(color.black);panecolor.add(noncecolor);buttoncoloraction=new buttoncolor

18、action();buttoncursor=new buttoncursor();for (int i=; i buttoncolor.length; i+) buttoncolori=new button();buttoncolori.setbackground(colori);buttoncolori.addactionlistener(buttoncoloraction);buttoncolori.addmouselistener(buttoncursor);panecolor.add(buttoncolori);pane.add(panecolor); / 画笔颜色选择器panel p

19、anestroke=new panel(new gridlayout(1, 13); / 控制画笔样式buttonstrokeaction=new buttonstrokeaction();button buttonstroke=new button11;buttonstroke=new button(1);buttonstroke1=new button(3);buttonstroke2=new button(5);buttonstroke3=new button(7);buttonstroke4=new button(9);buttonstroke5=new button(11);butt

20、onstroke6=new button(13);buttonstroke7=new button(15);buttonstroke8=new button(17);buttonstroke9=new button();buttonstroke1=new button();drawwidth=new label(粗细, label.center);drawcap=new label(, label.center);drawwidth.setbackground(color.lightgray);drawcap.setbackground(color.lightgray);panestroke.

21、add(drawwidth);for (int i=; i buttonstroke.length; i+) panestroke.add(buttonstrokei);buttonstrokei.addmouselistener(buttoncursor);buttonstrokei.addactionlistener(buttonstrokeaction);if (i =8) buttonstrokei.setname(width); else buttonstrokei.setname(cap);if (i=8) panestroke.add(drawcap);pane.add(pane

22、stroke); / 将画笔颜色选择器添加到窗体中this.add(pane, borderlayout.north); / 将画图板添加到窗体中this.add(palette); / 添加窗口监听,点击关闭按钮时退出程序this.addwindowlistener(new windowadapter() public void windowclosing(windowevent e) system.exit();); / 设置窗口的大小this.setsize(new dimension(4, 43); / 设置窗口位置,处于屏幕正中央this.setlocationrelativeto(

23、null); / 显示窗口this.setvisible(true);public static void main(string args) new drawpane();class buttoncoloraction implements actionlistener public void actionperformed(actionevent e) color color_temp=(button)e.getsource().getbackground();noncecolor.setbackground(color_temp);palette.setcolor(color_temp)

24、;class buttoncursor extends mouseadapter public void mouseentered(mouseevent e) (button) e.getsource().setcursor(new cursor(cursor.hand_cursor);public void mouseexited(mouseevent e) (button) e.getsource().setcursor(new cursor(cursor.default_cursor);class buttonstrokeaction implements actionlistener

25、public void actionperformed(actionevent e) button button_temp=(button) e.getsource();string name=button_temp.getname();if (name.equalsignorecase(width) drawwidth.settext(button_temp.getlabel();palette.setstroke(float.parsefloat(button_temp.getlabel(); else if (name.equalsignorecase(cap) drawcap.sett

26、ext(button_temp.getlabel();if (button_temp.getlabel().equals() palette.setstroke(basicstroke.cap_square); else if (button_temp.getlabel().equals() palette.setstroke(basicstroke.cap_round);class palette extends panel implements mouselistener, mousemotionlistener / 鼠标/x/ 坐标的位置private int mousex=; / 上一

27、次 x 坐标位置private int oldmousex=; / 鼠标 y 坐标的位置private int mousey=; / 上一次 y 坐标位置private int oldmousey=; / 画图颜色private color color=null; / 画笔样式private basicstroke stroke=null; / 缓存图形private bufferedimage image=null;public palette() this.addmouselistener(this);this.addmousemotionlistener(this); / 默认黑色画笔c

28、olor=new color(, , ); / 设置默认画笔样式stroke=new basicstroke(f, basicstroke.cap_round,basicstroke.join_round); / 建立 128 * 124 的 rgb 缓存图象image=new bufferedimage(128, 124, bufferedimage.type_int_rgb); / 设置颜色image.getgraphics().setcolor(color.white); / 画背景image.getgraphics().fillrect(, , 128, 124);public voi

29、d paint(graphics g) super.paint(g); / 转换为 graphics2dgraphics2d g2d=(graphics2d) g; / 获取缓存图形 graphics2dgraphics2d bg=image.creategraphics(); / 图形抗锯齿bg.setrenderinghint(renderinghints.key_antialiasing,renderinghints.value_antialias_on); / 设置绘图颜色bg.setcolor(color); / 设置画笔样式bg.setstroke(stroke); / 画线,从上

30、一个点到新的点bg.drawline(oldmousex, oldmousey, mousex, mousey); / 将缓存中的图形画到画板上g2d.drawimage(image, , , this);public void update(graphics g) this.paint(g);public basicstroke getstroke() return stroke;public void setstroke(basicstroke stroke) this.stroke=stroke;public void setstroke(float width) this.stroke

31、=new basicstroke(width, stroke.getendcap(), stroke.getlinejoin();public void setstroke(int cap) this.stroke=new basicstroke(stroke.getlinewidth(), cap, stroke.getlinejoin();public color getcolor() return color;public void setcolor(color color) this.color=color;public void mouseclicked(mouseevent mou

32、seevent) public void mousepressed(mouseevent mouseevent) this.oldmousex=this.mousex=mouseevent.getx();this.oldmousey=this.mousey=mouseevent.gety();repaint();public void mousereleased(mouseevent mouseevent) public void mouseentered(mouseevent mouseevent) this.setcursor(new cursor(cursor.crosshair_cur

33、sor);public void mouseexited(mouseevent mouseevent) this.setcursor(new cursor(cursor.default_cursor);public void mousedragged(mouseevent mouseevent) this.oldmousex=this.mousex;this.oldmousey=this.mousey;this.mousex=mouseevent.getx();this.mousey=mouseevent.gety();repaint();public void mousemoved(mouseevent mouseevent) 参考文献java语言程序设计.清华大学出版社.丁振凡主编设计总结经过一个学期的java学习,对java编程有了一定的认识,在做这个课程设计的时候,刚开始感觉自己无从

温馨提示

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

评论

0/150

提交评论