1、JAVA课程设计大 连 科 技 学 院Java课程设计报告题 目 小小画图板的设计与实现 学生姓名 吴 迪专业班级 软件工程10-1 指导教师 李孝贵 职 称 讲师 所在单位 信息科学系软件工程教研室 教学部主任 王立娟 完成日期 2012年12月21日课程设计报告单学号1001030126姓名吴 迪专业班级软件工程10-1考 核 项 目评分备注1平时工作态度及遵守纪律情况(10分)2掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平(10分)3独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度(20分)4完成课程设计说明书及软件的情况与水平(小组分工情况、规范性
2、、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性)(60分)总评成绩综 合 评 定:(优、良、中、及格、不及格) 指导教师签字:2012年12月24日Java课程设计任务书任务及要求:一、设计(研究)内容和要求1. 内容:编写一个小小画图板,使用Java,实现画图功能。本程序完成的是一个类似于Windows画图板的绘图程序,绘制一些基本的画图组件:直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等,从而通过各种组件实施画图。要求:1、软件要求实现各种画图界面,可以实现新建图形文件,打开图形文件,保存图形文件等功能,其主要功能是可以画图。2、文档要求(1
3、) 设计程序结构、画出模块图。(2) 按照指导教师给出的项目文档的模板进行书写。(3) 参考文献数量不得低于4个。二、工作量2周(10个工作日)时间三、计划安排第1个工作日第2个工作日:查找相关资料、书籍,阅读示例文档;设计程序结构、模块图、完成类的设计。第3个工作日第7个工作日:完成程序的编码,并且自己调试、测试。穿插进行项目文档的撰写。第8个工作日第9个工作日:撰写和整理项目文档。第10个工作日:由教师检查软件测试效果、项目文档,给出学生本课程成绩。指导教师签字:2012年12月10日目录题目: 11.需求分析 12.概要设计 13.详细设计 14.编码 55.调试分析 66.测试结果及运
4、行效果 67.系统开发所用到的技术 6参考文献 7附录 全部代码 8题目:小小画图板的设计与实现1.需求分析用过微软Windows操作系统的人一定都对Windows自带的画图板非常的熟悉。同图像处理软件界的“大哥大”Photoshop比起来,它虽然不及Photoshop的功能强大、内容丰富,但是作为Windows一直以来都内带的附件程序,它具有小巧玲珑、简单实用等其它绘图软件所不具备的优点。同时它的风格也被许多其它绘图软件所效仿。通过本绘图程序的编写,我们可以看到如何运用自己已经掌握的知识,自己动手来完成一个Java绘图程序,通过整个流程的熟悉以及对程序组织结构和框架的理解,也可以极大的促进我
5、们对Java程序和面向对象程序设计的认识和掌握。通过本次课程的学习,我们可以更加系统地学习和了解如何从整体上设计和实现一个程序,这对我们今后学习、开发和设计更大更复杂的程序有着很大的帮助。2.概要设计本程序完成的是一个类似于Windows画图板的绘图程序。由于不是开发和设计专业的绘图和图像制作软件,所以,完成的程序的简单功能包括以下几项:(1)新建一个空白图形文件:用于绘制新的图形。(2)打开或保存一个图形文件,便于对图形文件的管理。(3)绘制一些基本的画图组件:直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等。(4)可以用鼠标在绘图面板上单击拖动进行随笔画。(5)橡
6、皮擦:可以将已绘制好的图形擦掉。(6)添加文字:可以在绘图区域内添加文字。(7)选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。本程序中包括:宋体、隶书、华文彩云、仿宋、华文行楷、方正舒体、Times New Roman、Serif、Monospaced、SonsSerif、Garamond。当然,在下面的的程序分析中可以看到,由于我们灵活设置了字体数组,是的可以随意添加系统支持的任何字体。大大方便和简化了程序设计。(8)选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体、斜体,使用者有三种选择方式,包括:同时选中两者、只选择其中一种、两者都不选中。(9)
7、设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩、生动活泼。(10)设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不一样的。当作用于绘制图形组件时,它的作用是改变画笔绘制线条的粗细;当作用于文字时,它的作用是改变文字的大小。3.详细设计3.1程序基本组成框架和结构一组基本图形按钮,包括:Pencil(随笔画)、Line(直线)、Rect(矩形)、FRect(实心矩形)、Oval(椭圆)、FOval(实心椭圆)、Circle(圆)、FCircle(实心圆)、RoundRect(圆角矩形)、FrRect(实心圆角矩形)、Rubber(橡皮擦)、Word(文字)。这
8、些基本图形都继承于同一个父类:drawings。drawings 具有变量(属性):int x1,x2,y1,y2; /用来存放相应图形元素的坐标int R,G,B; /用来存放图形色彩颜色信息float stroke; /用来存放画笔粗细int type; /用来保存图形类型String s1; /用来保存输入文字字符串String s2; /用来保存字体类型字符串同时,drawing还具有方法:void draw ( Graphics2D g2d ) ;draw()方法中用到了Java绘图里面的Graphics2D类,所有继承drawings类的图形子类都重写了此方法。这就是Java程序中
9、类的继承的概念。它对于程序代码的重用是很重要的,将极大的方便和简略程序代码。(1)程序中包括以下三个基本操作按钮:1 新建(New):新建一个图形文件。2 打开(Open):打开一个图形文件。3 保存(Save):保存当前图形文件。(2)选择颜色和设置当前画笔粗细的按钮分别为:颜色(Color)、线条粗细(Stroke)。(3)选择当前字体风格的选择框为:粗体(BOLD)、斜体(ITALIC),用以设置当前字体的风格。(4)选择当前字体的下拉式复选框为:Styles。(5)菜单条及其组成:(6)文件(File)菜单项,包括:New(新建一个图形文件)、Load(打开一个图形文件)、Save(保
10、存当前图形文件)、Exit(退出程序)。1 颜色(Color)菜单项:用来设置当前颜色。2 线条粗细(Stroke)菜单项:用来设置当前画笔粗细。3 帮助(Help)菜单项:有关的程序帮助提示。 3.2画图板相关操作(1)新建一个图形文件单击工具栏上的图标,或选择FileNew菜单,则清除当前所绘制的图像,回到初始画面。 图1保存单击工具栏上的图标,或选择FileSave菜单,则弹出要求保存文件对话框。如下图: 图2(2)绘制基本图形基本图形包括以下几种:Pencil:随笔画,图标为:。Line:直线,图标为:。Rect:矩形,图标为:。FRect:实心矩形,图标为:。Oval:椭圆,图标为:
11、。FOval:实心椭圆,图标为:。Circle:圆,图标为:。FCircle:实心圆,图标为:。RoundRect:圆角矩形,图标为:。FrRect:实心圆角矩形,图标为:。Rubber:橡皮擦,图标为:。绘图时,单击工具栏上相应图形的图标,然后用鼠标拖动,在绘图区域内进行绘图即可。设置画笔大小单击工具栏上的图标,或单击StrokeSet Stroke菜单,则弹出相应的设置当前画笔粗细对话框。如下图:图3选择颜色单击工具栏区域,或单击ColorChoose Color菜单,则弹出相应的选择当前画图颜色对话框。如下图: 图4选择字体风格在工具栏区域 ,可以选择相应的字体风格,有粗体、斜体和粗斜体
12、三种可供选择。选择字体在工具栏区域,可以选择字体,本程序中有如下几种字体可供选择:宋体、隶书、华文彩云、仿宋、华文行楷、方正舒体、Time New Roman、Serif、Monospaced、SonsSerif、Garamond。3.3程序结构说明本程序主体为一个文件:QingDrawPad.java。其中包括的程序段有:1 QingDrawPad():构造函数,用以初始化。2 chooseColor():选择当前绘图颜色程序段。3 setStroke():设置当前画笔粗细程序段。4 loadFile():调用图形文件程序段。5 newFile():新建一个图形文件程序段。6 saveFil
13、e():保存当前所绘制图形程序段。7 creatNewItem():新建一个基本图形单元程序段。4.编码public class QingDrawPad extends JFrame /主类,扩展了JFrame类,用来生成主界面 private ObjectInputStream input; private ObjectOutputStream output; /定义输入输出流,用来调用和保存图像文件 private JButton choices; /按钮数组,存放以下名称的功能按钮 private String names = New, Open, Save, /这三个是基本操作按钮,包
14、括新建、打开、保存5.调试分析画板主要由以下几个部分组成:(1)主窗体的设计。主类(QingDrawPad)用来生成主界面,完成画图板的主要框架。主类由JFrame派生出来。主界面由菜单栏、工具栏和画图区域三部分组成,布局格式采用BorderLayout布局形式。(2) 菜单栏和工具栏的设计。菜单栏包括文件菜单栏、颜色菜单栏、线条粗细菜单栏和提示菜单栏。文件菜单栏包括文件的新建、打开、保存等选项颜色菜单栏可以进行颜色选择线条粗细菜单栏设置线条的粗细提示菜单栏给出提示信息。工具栏由新建、打开和保存文件按钮、基本图形的按钮、选择字体风格复选框和字体下拉列表框组成。在主类中添加并对菜单栏和工具栏添加
15、事件监听。(3)事件响应的处理。对菜单栏、工具栏和用鼠标画图的事件响应进行处理。6.测试结果及运行效果 我们可以看到,整个程序界面很简洁,而且界面操作、提示内容全部是中文,一目了然。在左上方的菜单栏里有文件、颜色、线条粗细、帮助4个下拉式菜单,可以对绘图文件进行相应的操作。下面一排是工具栏的工具按钮,从左到右依次为:新建文件、打开文件、保存文件、随笔画、直线、空心矩形、实心矩形、空心椭圆、空心圆、实心圆、空心圆角矩形、实心圆角矩形、橡皮擦、颜色选择按钮、线条粗细设置按钮、文字添加按钮、粗体字体选择框、斜体字体选择框、字体选择下拉式选择框。整个工具栏是可以拖动的,可以将它拖动到程序窗口的任意位置
16、。工具栏下面的整个白色区域就是绘图区域,即绘图面板,它的大小可以随着窗口的大小自动调整。在窗口的最底部是程序设计作者标注,以及鼠标状态提示条,可以显示当前的鼠标状态,包括进出窗口、移动、单击、松开等。7.系统开发所用到的技术在设计画图板的时候,我们运用了许多上课知道的知识,比如:类(子类与父类),继承。参考文献1 陈明.Java语言程序设计课程实践.北京:清华大学出版社,2008.2 杨树林、胡洁萍.Java语言最新实用案例教程.北京:清华大学出版社,2006.3 谭浩强.Java程序设计(第二版).北京:清华大学出版社,20064 谭浩强.Java程序设计(第二版)题解与上机指导(修订版),
17、2010.附录 全部代码package WuDrawPad;import java.awt.*;import java.awt.geom.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class QingDrawPad extends JFrame /主类,扩展了JFrame类,用来生成主界面 private ObjectInputStream input; private ObjectOutputStream output; /定义输入输出流,用来调用和保存图
18、像文件 private JButton choices; /按钮数组,存放以下名称的功能按钮 private String names = New, Open, Save, /这三个是基本操作按钮,包括新建、打开、保存 /*下面是我们的画图板上面有的基本的几个绘图单元按钮*/ Pencil, Line, Rect, FRect, Oval, FOval, Circle, FCircle, RoundRect, FrRect, Rubber, Color, Stroke, Word ; private String styleNames= 宋体 , 隶书 , 华文彩云 , 仿宋 , 华文行楷 ,
19、 方正舒体 , Times New Roman , Serif , Monospaced , SonsSerif , Garamond ; private Icon items; private String tipText= /这里是鼠标移动到相应按钮上面上停留时给出的提示说明条 新建一个文件, 打开一个文件, 保存当前文件, 绘制线条, 绘制直线, 绘制空心矩形, 绘制实心矩形, 绘制空心椭圆, 绘制实心椭圆, 绘制空心圆形, 绘制实心圆形, 绘制空心圆角矩形, 绘制实心圆角矩形, 橡皮擦, 选择颜色, 设置线条粗细, 输入文字 ; JToolBar buttonPanel ; /定义按钮
20、面板 private JLabel statusBar; /显示鼠标状态的提示条 private DrawPanel drawingArea; /画图区域 private int width=850,height=550; drawings itemList=new drawings5000; /用来存放基本图形的数组 private int currentChoice=3; /设置默认画图状态为随笔画 int index=0; /当前已经绘制的图形数目 private Color color=Color.black; /当前画笔颜色 int R,G,B; /用来存放当前色彩值 int f1,
21、f2; /用来存放当前字体风格 String style1; /用来存放当前字体 private float stroke=1.0f; /设置画笔粗细,默认值为1.0f JCheckBox bold,italic; /bold为粗体,italic为斜体,二者可以同时使用 JComboBox styles; public QingDrawPad() super(卿乐绘图画板(中国风); JMenuBar bar=new JMenuBar(); /定义菜单条 JMenu fileMenu=new JMenu(文件); /fileMenu.setMnemonic(F);/新建文件菜单条 JMenuI
22、tem newItem=new JMenuItem(新建); newItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) newFile(); /如果被触发,则调用新建文件函数段 ); fileMenu.add(newItem);/保存文件菜单项 JMenuItem saveItem=new JMenuItem(保存); saveItem.addActionListener( new ActionListener() public void actionPerformed(
23、ActionEvent e) saveFile(); /如果被触发,则调用保存文件函数段 ); fileMenu.add(saveItem);/打开文件菜单项 JMenuItem loadItem=new JMenuItem(打开); loadItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) loadFile(); /如果被触发,则调用打开文件函数段 ); fileMenu.add(loadItem); fileMenu.addSeparator();/退出菜单项 JM
24、enuItem exitItem=new JMenuItem(退出); exitItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0); /如果被触发,则退出画图板程序 ); fileMenu.add(exitItem); bar.add(fileMenu);/设置颜色菜单条 JMenu colorMenu=new JMenu(颜色);/选择颜色菜单项 JMenuItem colorItem=new JMenuItem(选择颜色); colorI
25、tem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) chooseColor(); /如果被触发,则调用选择颜色函数段 ); colorMenu.add(colorItem); bar.add(colorMenu);/设置线条粗细菜单条 JMenu strokeMenu=new JMenu(线条粗细);/设置线条粗细菜单项 JMenuItem strokeItem=new JMenuItem(设置线条粗细); strokeItem.addActionListener( new
26、 ActionListener() public void actionPerformed(ActionEvent e) setStroke(); ); strokeMenu.add(strokeItem); bar.add(strokeMenu);/设置提示菜单条 JMenu helpMenu=new JMenu(帮助);/设置提示菜单项 JMenuItem aboutItem=new JMenuItem(关于画板); aboutItem.addActionListener( new ActionListener() public void actionPerformed(ActionEve
27、nt e) JOptionPane.showMessageDialog(null, 卿乐画板n作者:刘佳、任家苇、吴迪 指导教师:李孝贵n于2012年12月22日,大连科技学院 , 画图板说明 , JOptionPane.INFORMATION_MESSAGE ); ); helpMenu.add(aboutItem); bar.add(helpMenu); items=new ImageIconnames.length;/创建各种基本图形的按钮 drawingArea=new DrawPanel(); choices=new JButtonnames.length; buttonPanel
28、= new JToolBar( JToolBar.VERTICAL ) ; buttonPanel = new JToolBar( JToolBar.HORIZONTAL) ; ButtonHandler handler=new ButtonHandler(); ButtonHandler1 handler1=new ButtonHandler1();/导入我们需要的图形图标,这些图标都存放在与源文件相同的目录下面 for(int i=0;ichoices.length;i+) itemsi=new ImageIcon(namesi + .gif); choicesi=new JButton(,itemsi); choicesi.setToolTipText(tipTexti); buttonPanel.add(choicesi); /将动作侦听器加入按钮里面 for(int i=3;ichoices.length-3;i+) choicesi.addActionListener(handler); choices0.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1