1、Java画图板程序设计报告西安科技大学Java语言课程设计报告题目: 画图板应用程序开发 班级: 学号: 姓名: 2010年 12 月1 设计题目及具体要求32 总体设计63 详细设计与实现44 系统测试115 设计小结31参考文献1、设计题目及具体要求 1.1 题目需求 1. 设计题目:小画图板的开发。 2. 重点分析 本软件的重难点为主窗体的设计、菜单栏和工具栏的设计、事件响应的处理、画图的基本功能的实现。 3. 实现功能1 新建一个空白图形文件:用于绘制新的图形。2 打开或保存一个图形文件,便于对图形文件的管理。3 绘制一些基本的图形组件:直线,矩形,实心矩形,椭圆,实心椭圆,圆,实心圆
2、,圆角矩形,实心圆角矩形等。4 用鼠标在绘图板上单击拖动进行随笔花。5 橡皮擦:可以将已绘制的图形擦掉。6 添加文字:可以在绘图区域内添加文字。7 选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。本程序中包括:宋体,隶书,华文彩云,仿宋-GB2312,华文行楷,Times New Roman,Serif,Monospaced,SonsSerif,Garamond。当然,在下面的程序分析中可以看到,由于设置了字体选择数组,使得可以随意添加系统支持的任何字体。大大方便和简化了程序设计。8 选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体,斜体,用同时选中两者
3、,只选择其中一种或两者都不选中3种选择方式。9 设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩,生动活泼。10. 设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不同的。当作用于绘制图形组建时,它的作用是改变画笔绘制线条的粗细;当作用于文字时,它的作用是改变文字的大小。4. 功能图图1-1 画图板应用程序功能结构图1.2 实现环境及工具简介CPU:Intel Core(TM)2 E5300 内存:2G运行平台:Windows XP 主频:2.60GHz 开发平台:Eclipse 主板:ASUSTeK Computer INC. P5QL-ASUS-SE Ecl
4、ipse简介: EclipseIBM的Java IDE开发环境IBM-Eclipse简介:Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。IBM-Eclipse版本历史:Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclips
5、e Foundation)管理。 2003年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布。2008年6月发布代号为Ganymede的3.4版。2009年7月发布代号为GALILEO的3.5版。2010年6月发布代号为Helios的3.6版。IBM-Eclips语言拓展:Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具
6、有的灵活性。许多软件开发商以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
7、Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。Eclipse 插件开发环境虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 E
8、clipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。Eclipse的主要组成Eclipse是一个开放源代码的软件开发项目,专注于为高
9、度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。Eclipse SDKEclips
10、e SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 GPL发布,第三方组件有各自自身的许可协议。2、总体设计2.1 基本图形按钮基本图形按钮包括:Pencil(随笔画)、Line(直线)、Rect(矩形)、fRect(实心矩形)、Oval(椭圆)、fOval(实心椭圆)、Circle(圆)
11、、fCircle(实心圆)、RoundRect(圆角矩形)、frrect(实心圆角矩形)、Rubber(橡皮擦)、Word(字)。基本图形都继承自同一个父类:drawings。Drawings具有的变量(属性):int x1, y1, x2, y2; /用来存放相应图形元素的左边int R, G, B; /用来存放图形色彩信息float stroke; /用来存放画笔粗细int type; /用来保存图形类型string s1; /用来保存输入文字字符串string s2; /用来保存字体类型字符串同时,drawings还有方法: Void draw(Graphics2D g2d) ;draw
12、()方法中用到了java绘图里面的Graphics2D类,所有继承drawings类的图形子类都重写此方法。这就是Java中类继承的概念。2.2 基本操作按钮1. New:新建一个图形文件。2. Open:打开一个图形文件。3. Save:保存当前图形文件。2.3 菜单及其组成1. File菜单项,包括:New(新建一个图形文件)、Load(打开一个图形文件)、Save(保存一个图形文件)、Exit(退出程序)。2. Color菜单项:用来设置当前颜色。3. Stroke菜单项:用来设置当前画笔粗细。4. Help菜单项:有关的程序帮助提示。2.4 其他功能组成1. 选择颜色和设置当前画笔粗细
13、的按钮分别为:Color、Stroke。2. 选择当前字体风格的选择框为:BOLD、ITALIC,用以设置当前字体的风格。3. 选择当前字体的下来是复选框为:Styles。2.5 完成的程序界面图为:图2-1 完成的程序界面效果图3、详细设计与实现3.1 新建一个图形文件单击工具栏上的图标,或选择File New菜单,则清除当前所绘制的图像,回到初始画面,如图4-1所示。3.2 打开已有的文件 单击工具栏上的图标,或选择FileLoad菜单,则清除当前所绘制的图像,并弹出打开文件对话框要求选择打开的文件,如图5-1所示。图3-1 选择打开文件对话框3.3 保存 单击工具栏上的图标,或者选择Fi
14、leSave菜单,则弹出要求保存文件对话框,如图5-2所示。图3-2 保存文件对话框3.4 绘制基本图形基本图形包括:1. Pencil:随笔画,图标为。2. Line:直线,图标为。3. Rect:矩形,图标为。4. fRect:实心矩形,图标为。5. Oval:椭圆,图标为。6. fOval:实心椭圆,图标为。7. Circle:圆,图标为。8. Fcircle:实心圆,图标为。9. RoundRect:圆角矩形,图标为。10. frRect:实心圆角矩形,图标为。11. Rubber:橡皮擦,图标为。画图时,单击工具栏上相应图形的图标,然后用鼠标拖动,在绘图区域内进行绘画即可。3.5 设
15、置画笔大小 单击工具栏上的图标,或者单击StrokeSet Stroke菜单,则弹出相应的设置当前画笔粗细对话框,如图5-3所示。 图3-3 设置当前画笔粗细对话框3.6 选择颜色 单击工具栏上的图标,或单击ColorChoose Color菜单,则弹出相应的选择当前画图颜色对话框,如图5-4所示。图3-4 选择颜色对话框3.7 选择字体风格 在工具栏区域,可以选择相应的字体风格,有粗体和斜体两种风格可供选择。3.8选择字体 在工具栏区域,可以选择字体,本程序中有如下几种字体可供选择:宋体,隶书,华文彩云,仿宋-GB2312,华文行楷,Times New Roman,Serif,Monospa
16、ced,SonsSerif,Garamond。3.9 程序结构说明 本程序主体文件为一个文件:MiniDrawPad.Java。其中包括的程序段有:1. MiniDrawPad():构造函数,用以初始化。2. chooseColor():选择当前绘图颜色程序段。3. setStroke():设置当前画笔粗细程序段。4. loadFile():调用图形文件程序段。5. newFile():新建一个图形文件程序段。6. saveFile():保存当前所绘制图形程序段。7. createNewItem():新建一个基本图形单元程序段。相应的内部类有:1. ButtonHandler:用来处理基本图形
17、单元的按钮事件。2. ButtonHandler1:用来处理New、Open、Save三个操作按钮的按钮事件。3. DrawPanel:用老创建绘图区域的子类。4. MouseA:继承了MouseAdapter,用来完成鼠标相应事件的操作,如单击、松开、进入和离开等。5. MouseB:继承了MouseMotionAdapter,用来完成鼠标拖动和鼠标移动时的相应操作。4、系统测试4.1 运行结果1. 主界面框架 主界面类继承自JFrame类,包括构造函数及各种功能的定义,主要代码如下 :import java.awt.*;import java.awt.geom.*;import java.
18、awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class MiniDrawPad extends JFrame /主类,扩展了JFrame类,用来生成主界面 private ObjectInputStream input; private ObjectOutputStream output; /定义输入输出流,用来调用和保存图像文件 private JButton choices; /按钮数组,存放以下名称的功能按钮 private String names= New, Open, Sav
19、e, /这三个是基本操作按钮,包括新建、打开、保存 Pencil, /铅笔画,也就是用鼠标拖动着随意绘图 Line, /绘制直线 Rect, /绘制空心矩形 fRect, /绘制以指定颜色填充的实心矩形 Oval, /绘制空心椭圆 fOval, /绘制以指定颜色填充的实心椭圆 Circle, /绘制圆形 fCircle, /绘制以指定颜色填充的实心圆形 RoundRect, /绘制空心圆角矩形 frRect, /绘制以指定颜色填充的实心圆角矩形 Rubber, /橡皮擦,可用来擦去已经绘制好的图案 Color, /选择颜色按钮,可用来选择需要的颜色 Stroke, /选择线条粗细的按钮,输入需
20、要的数值可以实现绘图线条粗细的变化 Word /输入文字按钮,可以在绘图板上实现文字输入 ; private String styleNames= 宋体 , 隶书 , 华文彩云 , 仿宋 , 华文行楷 , 方正舒体 , Times New Roman , Serif , Monospaced , SonsSerif , Garamond ; /可供选择的字体项 private Icon items; private String tipText= /这里是鼠标移动到相应按钮上面上停留时给出的提示说明条 Draw a new picture, Open a saved picture, Save
21、 current drawing, Draw at will, Draw a straight line, Draw a rectangle, Fill a ractangle, Draw an oval, Fill an oval, Draw a circle, Fill a circle, Draw a round rectangle, Fill a round rectangle, Erase at will, Choose current drawing color, Set current drawing stroke, Write down what u want ; JToolB
22、ar buttonPanel ; /定义按钮面板 private JLabel statusBar; /显示鼠标状态的提示条 private DrawPanel drawingArea; /画图区域 private int width=800,height=550; /定义画图区域初始大小 drawings itemList=new drawings5000; /用来存放基本图形的数组 private int currentChoice=3; /设置默认画图状态为随笔画 int index=0; /当前已经绘制的图形数目 private Color color=Color.black; /当前
23、画笔颜色 int R,G,B; /用来存放当前色彩值 int f1,f2; /用来存放当前字体风格 String style1; /用来存放当前字体 private float stroke=1.0f; /设置画笔粗细,默认值为1.0f JCheckBox bold,italic; /定义字体风格选择框 /bold为粗体,italic为斜体,二者可以同时使用 JComboBox styles; public MiniDrawPad() /构造函数 super(Drawing Pad); JMenuBar bar=new JMenuBar(); /定义菜单条 JMenu fileMenu=new
24、 JMenu(File); fileMenu.setMnemonic(F);2. 新建、保存、打开、退出菜单项代码如下:/新建文件菜单条 JMenuItem newItem=new JMenuItem(New); newItem.setMnemonic(N); newItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) newFile(); /如果被触发,则调用新建文件函数段 ); fileMenu.add(newItem);/保存文件菜单项 JMenuItem saveI
25、tem=new JMenuItem(Save); saveItem.setMnemonic(S); saveItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFile(); /如果被触发,则调用保存文件函数段 ); fileMenu.add(saveItem);/打开文件菜单项 JMenuItem loadItem=new JMenuItem(Load); loadItem.setMnemonic(L); loadItem.addActionListener(
26、new ActionListener() public void actionPerformed(ActionEvent e) loadFile(); /如果被触发,则调用打开文件函数段 ); fileMenu.add(loadItem); fileMenu.addSeparator();/退出菜单项 JMenuItem exitItem=new JMenuItem(Exit); exitItem.setMnemonic(X); exitItem.addActionListener( new ActionListener() public void actionPerformed(Action
27、Event e) System.exit(0); /如果被触发,则退出画图板程序 ); fileMenu.add(exitItem); bar.add(fileMenu);3. 线条宽度、颜色、提示功能 代码如下:/设置颜色菜单条 JMenu colorMenu=new JMenu(Color); colorMenu.setMnemonic(C);/选择颜色菜单项 JMenuItem colorItem=new JMenuItem(Choose Color); colorItem.setMnemonic(O); colorItem.addActionListener( new ActionLi
28、stener() public void actionPerformed(ActionEvent e) chooseColor(); /如果被触发,则调用选择颜色函数段 ); colorMenu.add(colorItem); bar.add(colorMenu);/设置线条粗细菜单条 JMenu strokeMenu=new JMenu(Stroke); strokeMenu.setMnemonic(S);/设置线条粗细菜单项 JMenuItem strokeItem=new JMenuItem(Set Stroke); strokeItem.setMnemonic(K); strokeIt
29、em.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) setStroke(); ); strokeMenu.add(strokeItem); bar.add(strokeMenu);/设置提示菜单条 JMenu helpMenu=new JMenu(Help); helpMenu.setMnemonic(H);/设置提示菜单项 JMenuItem aboutItem=new JMenuItem(About this Drawing Pad!); aboutItem.setMnemonic(A); aboutItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null, This is a m
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1