西安科技大学Java语言课程设计报告¥题目:画图板应用程序开发&班级:学号:姓名:2010年 12 月目录1 设计题目及具体要求 (3)·2 总体设计 (6)3 详细设计与实现 (4)4 系统测试 (11)5 设计小结 (31)参考文献$:1、设计题目及具体要求题目需求?1. 设计题目:小画图板的开发。
2. 重点分析本软件的重难点为主窗体的设计、菜单栏和工具栏的设计、事件响应的处理、画图的基本功能的实现。
3. 实现功能1.新建一个空白图形文件:用于绘制新的图形。
2.打开或保存一个图形文件,便于对图形文件的管理。
3.绘制一些基本的图形组件:直线,矩形,实心矩形,椭圆,实心椭圆,圆,实心圆,圆角矩形,实心圆角矩形等。
4.用鼠标在绘图板上单击拖动进行随笔花。
5.`6.橡皮擦:可以将已绘制的图形擦掉。
7.添加文字:可以在绘图区域内添加文字。
8.选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。
本程序中包括:宋体,隶书,华文彩云,仿宋-GB2312,华文行楷,Times New Roman,Serif,Monospaced,SonsSerif,Garamond。
当然,在下面的程序分析中可以看到,由于设置了字体选择数组,使得可以随意添加系统支持的任何字体。
大大方便和简化了程序设计。
9.选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体,斜体,用同时选中两者,只选择其中一种或两者都不选中3种选择方式。
10.设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩,生动活泼。
10. 设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不同的。
当作用于绘制图形组建时,它的作用是改变画笔绘制线条的粗细;当作用于文字时,它的作用是改变文字的大小。
;4. 功能图图1-1 画图板应用程序功能结构图1.2实现环境及工具简介CPU:Intel Core(TM)2 E5300 内存:2G运行平台:Windows XP 主频:开发平台:Eclipse 主板:ASUSTeK Computer INC. P5QL-ASUS-SE ;Eclipse简介:Eclipse——IBM的Java IDE开发环境IBM-Eclipse简介:Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
IBM-Eclipse版本历史:Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。
2003年,Eclipse 选择OSGi服务平台规范为运行时架构。
2007年6月,稳定版发布。
2008年6月发布代号为Ganymede的版。
2009年7月发布代号为GALILEO的版。
2010年6月发布代号为Helios的版。
IBM-Eclips语言拓展:Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse 的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE 软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
[Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM 提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse 项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。
Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
Eclipse 插件开发环境虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。
Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。
由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。
例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。
Eclipse的主要组成Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
Eclipse SDKEclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。
这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。
Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。
Eclipse项目生产的软件以 GPL发布,第三方组件有各自自身的许可协议。
、2、总体设计基本图形按钮基本图形按钮包括:Pencil(随笔画)、Line(直线)、Rect(矩形)、fRect(实心矩形)、Oval(椭圆)、fOval(实心椭圆)、Circle(圆)、fCircle(实心圆)、RoundRect(圆角矩形)、frrect(实心圆角矩形)、Rubber(橡皮擦)、Word(字)。
基本图形都继承自同一个父类:drawings。
Drawings具有的变量(属性):int x1, y1, x2, y2;主界面框架主界面类继承自JFrame类,包括构造函数及各种功能的定义,主要代码如下:—import .*;import .*;import .*;import .*;public class MiniDrawPad extends JFrame 新建、保存、打开、退出菜单项代码如下:线条宽度、颜色、提示功能!代码如下:工具栏图形按钮功能实现创建基本图形按钮、导入图标、加入动作侦听器、字体风格选择、字体选择、画图板等功能的实现。
代码如下:pg");choices[i]=new JButton("",items[i]);choices[i].setToolTipText(tipText[i]);(choices[i]);。
}ddActionListener(handler);}choices[0].addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e)。
{newFile();}});choices[1].addActionListener(new ActionListener(){】public void actionPerformed(ActionEvent e) {loadFile();}});choices[2].addActionListener(【new ActionListener(){public void actionPerformed(ActionEvent e) {saveFile();}});choices[].addActionListener(handler1);·choices[].addActionListener(handler1);choices[].addActionListener(handler1);1=itemList[index].x2=();itemList[index].y1=itemList[index].y2=();1=itemList[index].x2=();itemList[index].y1=itemList[index].y2=();)index++;createNewItem();}1=();itemList[index].y1=();String input;¥input=("Please input the text you want!"); itemList[index].s1=input;itemList[index].x2=f1;itemList[index].y2=f2;itemList[index].s2=style1;index++;]currentChoice=14;createNewItem();();}}public void mouseReleased(MouseEvent e){(" Mouse Released @:[" + () +}", " + () + "]");if(currentChoice==3||currentChoice==13){itemList[index].x1=();itemList[index].y1=();}itemList[index].x2=();《itemList[index].y2=();repaint();index++;createNewItem();}public void mouseEntered(MouseEvent e){(" Mouse Entered @:[" + () +.", " + () + "]"); }public void mouseExited(MouseEvent e){(" Mouse Exited @:[" + () +", " + () + "]"); }\}class mouseB extends MouseMotionAdapter{public void mouseDragged(MouseEvent e){(" Mouse Dragged @:[" + () +", " + () + "]");if(currentChoice==3||currentChoice==13){itemList[index-1].x1=itemList[index].x2=itemList[index].x1=();…itemList[index-1].y1=itemList[index].y2=itemList[index].y1=(); index++;createNewItem();}else{itemList[index].x2=();itemList[index].y2=();#}repaint();}public void mouseMoved(MouseEvent e){(" Mouse Moved @:[" + () +", " + () + "]");}}}ype=currentChoice;itemList[index].R=R;itemList[index].G=G;itemList[index].B=B;itemList[index].stroke=stroke;}=R;'itemList[index].G=G;itemList[index].B=B;}troke=stroke;}quals(""))'(fileChooser,"Invalid File Name","Invalid File Name", ;else{try {();FileOutputStream fos=new FileOutputStream(fileName); output=new ObjectOutputStream(fos);】drawings record;( index );for(int i=0;i< index ;i++){drawings p= itemList[ i ] ;(p);.(); quals(""))(fileChooser,"Invalid File Name","Invalid File Name", ;else {try {FileInputStream fis=new FileInputStream(fileName);:input=new ObjectInputStream(fis);drawings inputRecord;int countNumber=0;countNumber=();for(index=0;index< countNumber ;index++){(inputRecord=(drawings)();itemList[ index ] = inputRecord ;}createNewItem();();repaint();}$catch(EOFException endofFileException){(this,"no more record in file","class not found", );}catch(ClassNotFoundException classNotFoundException){ (this,"Unable to Create Object","end of file", );}catch (IOException ioException){(this,"error during read from file","read Error", );}}}各种画图功能的实现代码如下:各功能运行结果打开、保存、设置线宽、颜色设置功能图分别见3-1, 3-2,3-3, 3-4,这里不再赘述。