Java画图板课程设计报告.docx

上传人:b****7 文档编号:16755690 上传时间:2023-07-17 格式:DOCX 页数:25 大小:381.27KB
下载 相关 举报
Java画图板课程设计报告.docx_第1页
第1页 / 共25页
Java画图板课程设计报告.docx_第2页
第2页 / 共25页
Java画图板课程设计报告.docx_第3页
第3页 / 共25页
Java画图板课程设计报告.docx_第4页
第4页 / 共25页
Java画图板课程设计报告.docx_第5页
第5页 / 共25页
Java画图板课程设计报告.docx_第6页
第6页 / 共25页
Java画图板课程设计报告.docx_第7页
第7页 / 共25页
Java画图板课程设计报告.docx_第8页
第8页 / 共25页
Java画图板课程设计报告.docx_第9页
第9页 / 共25页
Java画图板课程设计报告.docx_第10页
第10页 / 共25页
Java画图板课程设计报告.docx_第11页
第11页 / 共25页
Java画图板课程设计报告.docx_第12页
第12页 / 共25页
Java画图板课程设计报告.docx_第13页
第13页 / 共25页
Java画图板课程设计报告.docx_第14页
第14页 / 共25页
Java画图板课程设计报告.docx_第15页
第15页 / 共25页
Java画图板课程设计报告.docx_第16页
第16页 / 共25页
Java画图板课程设计报告.docx_第17页
第17页 / 共25页
Java画图板课程设计报告.docx_第18页
第18页 / 共25页
Java画图板课程设计报告.docx_第19页
第19页 / 共25页
Java画图板课程设计报告.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java画图板课程设计报告.docx

《Java画图板课程设计报告.docx》由会员分享,可在线阅读,更多相关《Java画图板课程设计报告.docx(25页珍藏版)》请在冰点文库上搜索。

Java画图板课程设计报告.docx

Java画图板课程设计报告

目  录

 

1引言

课程设计选题

《画图板软件开发和设计》

课程设计的目的

巩固和加深以Java语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。

本选题的设计背景

日常生活、学习中我们经常需要画图,简单的画图我们可以手工画图,但往往还是不能满足需求。

因此,借助计算机准确而快速的画图就十分有必要了。

好的画图工具能够很好的完成日常生活中的各种画图工作。

学习了Java语言后设计开发一个画图软件是对Java语言学习的巩固以及提高。

能够在实践中更深的理解面向对象语言,同时提高了解决问题的能力。

需求分析

功能需求

考虑到画图板的实际需要,画图板要实现打开、保存图片,用于打开本地图片或保存当前图片至本地;选择需要绘制的图形,用于选择需要绘制的图形样式,如直线、矩形、椭圆等;设置背景色、画笔色以及画笔大小,用于设置画板背景颜色、画笔颜色和当前画笔粗细;擦除错误操作;显示帮助信息等。

软件开发运行环境

本软件开发平台:

Java

本软件集成开发环境:

MyEclipse

本软件运行环境:

Windowsxp或以上版本

总体设计

1.1软件结构设计

3.1.1结构设计

菜单栏的设计及功能实现:

菜单栏主要包括文件、帮助等常见菜单。

其中文件菜单有新建、打开、保存、另存为等功能;帮助菜单提供关于画图板的信息。

画图区的设计:

对图片的编辑处理区。

工具栏的设计:

根据实际需要选择不同的工具完成画图操作。

其他功能设计。

软件功能模块及主要类设计

3.2.1功能描述

本软件可以绘制日常生活、学习中的一般图形。

软件主要有菜单栏、工具栏、画图区组成,菜单栏具有新建、打开、保存等常见的功能;工具栏可以选择用户需要的图形样式、设置参数、插入文本等操作;画图区就是简单绘图区域,用户在画图区可自由绘制图形。

还可以根据不同的需要设置背景色,画笔大小、画笔颜色。

能够在任意点添加几何图形等。

3.2.2总体结构图

图3.2.1画图板总体结构图

3.2.3主要类设计

(1)Paint类

Paint类为主类,定义main方法;

(2)MyPaint类

MyPaint类继承JFrame类,用于实现画图板的总体构架。

包括菜单栏设计、工具栏设计、画图区创建等等。

画图板的基本功能都靠MyPaint类来实现。

(3)DrawPanel类

DrawPanel来是MyPaint类的内部类,是用来画图的。

(4)drawings类

drawings类是画图类,基本图形的单元。

其各个子类用以实现画各种图形包括以下几个子类:

1.Line类:

绘制直线;

2.Rect类:

绘制矩形;

3.fillRect:

绘制实心矩形;

4.Oval类:

绘制椭圆;

5.fillOval类:

绘制实心椭圆;

6.Circle类:

绘制圆;

7.fillCircle类:

绘制实心圆;

8.RoundRect:

绘制圆角矩形;

9.fillRoundRect类:

绘制实心圆角矩形;

10.Pencil类:

自由笔;

11.Rect3D类:

绘制3D矩形;

12.fillRect3D类:

绘制实现3D矩形;

13.Cube类:

绘制立方体;

14.Rubber类:

橡皮类;

15.Word类:

文本类;

详细设计与实现

主界面

4.1.1主界面功能设计

画图板的主界面分为菜单栏、工具栏、画图区、状态栏四部分。

其中,菜单栏实现了图片的打开、新建、保存等操作;工具栏实现了画笔的各种操作;画图区实现了图片的操作面板;状态栏实现了显示鼠标当前状态。

4.1.2主界面设计

画图板的主界面如图所示,在主类中加载了系统风格,使其界面更为美观;为工具栏和工具栏按钮添加了颜色,使画图板颜色不单调;为画图板得主窗口设置图标,使画图板更有个性。

在实现画图功能的基础上使其外观更为人性化。

图4.1.1主界面图

4.1.3主界面主要代码

设置窗体图标:

Toolkitkit=();getSystemLookAndFeelClassName());

}4.2.14.2.2件菜单:

图4.2.1文件菜单

2.编辑菜单:

图4.2.3编辑菜单

 

3.设置菜单:

图4.2.3设置菜单

4.帮助菜单:

图4.2.4帮助菜单

5.打开文件窗口:

图4.2.5打开窗口

6.撤销菜单(此功能尚不完善):

图4.2.6撤销操作

7.画笔颜色选择:

图4.2.7画笔颜色选择

8.画笔大小设置:

图4.2.8设置画笔大小

9.立方体宽度设置:

图4.2.8设置立方体宽度

10.“关于画图板”帮助:

图4.2.10关于画图板

11.“关于作者”帮助

图4.2.11关于作者

4.2.3菜单栏主要代码

菜单栏代码较多,详细代码见附录。

工具栏

4.3.1工具栏功能设计

工具栏是一系列快捷操作的按钮,分别是:

新建、打开、保存、自由画笔、直线、空心矩形、实心矩形、空心椭圆、实心椭圆、圆、实心圆、空心圆角矩形、实心圆角矩形、3D矩形、3D矩形、3D长方体、橡皮、设置背景色、画笔颜色、画笔粗细、添加文字,用来实现相应的功能。

另外还为工具栏设置了按钮图片和鼠标右击事件,右击鼠标可以设置工具栏是否可拖动。

4.3.2工具栏界面设计

图4.3.1工具栏界面

4.3.3工具栏主要代码

工具栏按钮图标:

items=newImageIcon[];

if");

choices[i]=newJButton(items[i]);

choices[i].setToolTipText(tipText[i]);

choices[i].setBackground(newColor(0,255,0));4.4.14.4.2

4.4.14.4.34.5.14.5.2

4.5.14.5.31=();

itemList[index].y1=();

}

itemList[index].x2=();

itemList[index].y2=();

repaint();

index++;

createNewItem();

}

小结和展望

三周的时间很快,作为Java初学者的我在三周的时间内完成画图板软件的开发、设计不免有很多漏洞。

但是重要的不是结果,而是从中学到了什么!

从写字板到画图板,相同的地方不少,但不同的地方更多。

写字板是文本处理,从文本区定义到读写文件都相对容易些。

而画图板就不同了,画图面板要自己定义,还要设置各种参数。

一开始就觉得挺难入手,但是作为Java语言的入门级开发产品,不管多少困难也要坚持到最后。

通过查阅书籍、上网搜索资料以及同学间的交流,最终还是比较成功的完成了画图板软件的设计。

画图板软件的开发,使我收获了更多的知识。

而这些知识是实践中才能学得到的。

想起一句话:

纸上得来终觉浅,绝知此事要躬行。

没错,学习不仅仅是大脑的思考,更要有实践的配合。

现在觉得自己掌握的Java知识比课堂上学到的多很多,同时对其他编程语言的学习也有了一定的帮助。

软件设计向来不是一路顺风的,在开发过程中总会突发奇想的实现某些其他功能,但总是失败,比如像文本处理的撤销与恢复操作,觉得这个功能很有必要,但是没有实现。

如果画错了就只能重画了,因此解决这一问题意义很大,期待以后能够解决这一问题。

 

参考文献

[1]耿祥义,张跃平.Java大学实用教程[M].北京:

电子工业出版社,2011.

[2]陈嵩等.新手学Java[M].北京:

北京希望电子出版社,2010.

 

附录

使用说明书

本软件由开发,运行文件后直接进入窗口。

菜单栏有新建、打开、保存、另存为、退出功能。

可用键盘快捷键实现相应功能。

打开文件只可打开本软件生成的图片文件,再次提示用户注意。

编辑菜单尚不完善,后续版本将会解决,望用户包涵。

设置菜单可设置画笔颜色、画笔大小和立方体宽度,如有需要可在此进行设置。

帮助菜单显示本软件信息与作者信息,如有需要,请您按照相关联系方式进行联系。

由于作者水平有限,本软件不免有很多错误的地方,欢迎广大用户提出意见!

 

源程序清单

:

import.*;

import.*;

import.*;

importclassPaint{

publicstaticvoidmain(String[]args){

try{

(UIManager.

getSystemLookAndFeelClassName());

}1.0fif");

choices[i]=newJButton(items[i]);

choices[i].setToolTipText(tipText[i]);

choices[i].setBackground(newColor(0,255,0));ddActionListener(handler);

}

choices[0].addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

newFile();

}

});

choices[1].addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

loadFile();

}

});

choices[2].addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

saveFile();

}

});

choices[].addActionListener(handler1);

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=();

Stringinput;

input=("输入要添加的文本内容");

itemList[index].s1=input;

itemList[index].x2=f1;

itemList[index].y2=f2;

itemList[index].s2=style1;

index++;

currentChoice=17;

createNewItem();

();

}

}

publicvoidmouseReleased(MouseEvente){

("鼠标松开:

["+()+","+()+"]");

if(currentChoice==3||currentChoice==16){

itemList[index].x1=();

itemList[index].y1=();

}

itemList[index].x2=();

itemList[index].y2=();

repaint();

index++;

createNewItem();

}

publicvoidmouseEntered(MouseEvente){

("鼠标进入:

["+()+","+()+"]");

}

publicvoidmouseExited(MouseEvente){

("鼠标移出:

["+()+","+()+"]");

}

}

1=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();

}

publicvoidmouseMoved(MouseEvente){

("鼠标位置:

["+()+","+()+"]");

}

}

ype=currentChoice;

itemList[index].R=R;

itemList[index].G=G;

itemList[index].B=B;

itemList[index].stroke=stroke;

itemList[index].thickness=thickness;

}

=R;

itemList[index].G=G;

itemList[index].B=B;

}

troke=stroke;

}

hickness=thickness;

createNewItem();

repaint();

}

1.0fquals(""))

(fileChooser,"无效的文件名",

"无效的文件名",;

else{

try{

FileInputStreamfis=newFileInputStream(fileName);

input=newObjectInputStream(fis);

drawingsinputRecord;

intcountNumber=0;

countNumber=();

for(index=0;index

inputRecord=(drawings)();

itemList[index]=inputRecord;

}

createNewItem();

();

repaint();

}

catch(EOFExceptionendofFileException){

(this,"没有更多的记录文件",

"没有找到类",);

}

catch(ClassNotFoundExceptionclassNotFoundException){

(this,"无法创建对象",

"文件终点",);

}

catch(IOExceptionioException){

(this,"读取文件时产生错误",

"读取错误",);

}

}

}

quals(""))

(fileChooser,"无效的文件名",

"无效的文件名",;

else{

try{

();

FileOutputStreamfos=newFileOutputStream(fileName);

output=newObjectOutputStream(fos);

(index);

for(inti=0;i

drawingsp=itemList[i];

(p);

();ndo();edo();ddEdit());

}

}

//工具栏右击菜单,设置工具栏是否可拖动

voidToolMenu(){

finalJPopupMenuToolMenu;

ToolMenu=newJPopupMenu();

finalJCheckBoxmove=newJCheckBox("工具栏是否可拖动");

(newColor(0,255,0));

(move);

(newMouseAdapter(){

publicvoidmousePressed(MouseEvente){

if()==

(buttonPanel,(),());

}

});

(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if()){

(true);

}else{

(false);

}

}

});

}

}

:

import画图类,基本图形单元,用到串行化接口,保存时所用

classdrawingsimplementsSerializable{

intx1,y1,x2,y2;//定义坐标属性

intR,G,B;//定义色彩属性

floatstroke;//定义线条粗细属性

inttype;//定义字体属性

Strings1;

Strings2;//定义字体风格属性

intthickness;

voiddraw(Graphics2Dg2d){

};//定义绘图函数

}

//各种基本图形单元的子类,都继承自父类drawings

//直线类

classLineextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke,,);

(x1,y1,x2,y2);

}

}

//矩形类

classRectextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),

(x1-x2),(y1-y2));

}

}

//实心矩形类

classfillRectextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),(x1-x2),(y1-y2));

}

}

//椭圆类

classOvalextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),(x1-x2),(y1-y2));

}

}

//实心椭圆

classfillOvalextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),(x1-x2),(y1-y2));

}

}

//圆类

classCircleextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),

(x1-x2),(y1-y2)),

(x1-x2),(y1-y2)));

}

}

//实心圆

classfillCircleextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),

(x1-x2),(y1-y2)),

(x1-x2),(y1-y2)));

}

}

//圆角矩形类

classRoundRectextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),

(x1-x2),(y1-y2),50,35);

}

}

//实心圆角矩形类

classfillRoundRectextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),

(x1-x2),(y1-y2),50,35);

}

}

//随笔画类

classPencilextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke,

);

(x1,y1,x2,y2);

}

}

//3D矩形类

classRect3Dextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1,x2),(y1,y2),(x1-x2),

(y1-y2),false);

}

}

//填充的3D矩形类

classfillRect3Dextendsdrawings{

voiddraw(Graphics2Dg2d){

(newColor(R,G,B));

(newBasicStroke(stroke));

(x1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2