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

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

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

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

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

Java画图板课程设计报告DOC

目  录

1引言1

1.1课程设计选题1

1.2课程设计的目的1

1.3本选题的设计背景1

2需求分析1

2.1功能需求1

2.2软件开发运行环境1

3总体设计2

3.1软件结构设计2

3.1.1结构设计2

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

3.2.1功能描述2

3.2.2总体结构图3

3.2.3主要类设计3

4详细设计与实现4

4.1主界面4

4.1.1主界面功能设计4

4.1.2主界面设计4

4.1.3主界面主要代码5

4.2菜单栏6

4.2.1菜单栏功能设计6

4.2.2菜单栏界面设计6

4.2.3菜单栏主要代码9

4.3工具栏10

4.3.1工具栏功能设计10

4.3.2工具栏界面设计10

4.3.3工具栏主要代码10

4.4画图区11

4.4.1画图区功能设计11

4.4.2画图区界面设计12

4.4.3画图区主要代码12

4.5状态栏12

4.5.1状态栏功能设计12

4.5.2状态栏设计12

4.5.3状态栏代码12

5小结和展望13

参考文献14

附录15

使用说明书15

源程序清单15

1引言

1.1课程设计选题

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

1.2课程设计的目的

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

1.3本选题的设计背景

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

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

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

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

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

需求分析

2.1功能需求

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

2.2软件开发运行环境

本软件开发平台:

Java

本软件集成开发环境:

MyEclipse

本软件运行环境:

Windowsxp或以上版本

总体设计

1.1软件结构设计

3.1.1结构设计

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

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

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

②画图区的设计:

对图片的编辑处理区。

③工具栏的设计:

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

④其他功能设计。

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

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主界面

4.1.1主界面功能设计

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

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

4.1.2主界面设计

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

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

图4.1.1主界面图

4.1.3主界面主要代码

①设置窗体图标:

Toolkitkit=Toolkit.getDefaultToolkit();//获取Toolkit实例

Imageimage=kit.getImage("Icons/Title.jpg");//获取图片setIconImage(image);//设置窗体图标

②加载系统风格:

try{

UIManager.setLookAndFeel(UIManager.

getSystemLookAndFeelClassName());

}//加载系统界面风格

catch(Exceptione){

}

③设置鼠标样式:

setCursor(newCursor(Cursor.HAND_CURSOR));//设置画图板鼠标样式

④背景色:

setBackground(newColor(0,255,0));

4.2菜单栏

4.2.1菜单栏功能设计

菜单栏包括文件、编辑、设置、帮助四部分。

其中,文件菜单实现了新建、打开、保存、退出功能;编辑菜单实现了撤销和恢复功能;设置菜单实现了画笔颜色、画笔大小和立方体宽度的设置;帮助菜单实现了关于画图板的帮助信息;

4.2.2菜单栏界面设计

1.文件菜单:

图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工具栏

4.3.1工具栏功能设计

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

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

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

4.3.2工具栏界面设计

图4.3.1工具栏界面

4.3.3工具栏主要代码

①工具栏按钮图标:

items=newImageIcon[names.length];

//创建各种基本图形的按钮

choices=newJButton[names.length];

buttonPanel=newJToolBar(JToolBar.VERTICAL);

buttonPanel=newJToolBar(JToolBar.HORIZONTAL);

ButtonHandlerhandler=newButtonHandler();

ButtonHandler1handler1=newButtonHandler1();

buttonPanel.setBackground(newColor(0,255,0));//工具栏背景色设置

//导入图形图标,图标存放在项目文件夹下的Icons目录内

for(inti=0;i

items[i]=newImageIcon("Icons/"+names[i]+".gif");

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

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

choices[i].setBackground(newColor(0,255,0));//按钮背景色设置

buttonPanel.add(choices[i]);

}

②鼠标右击事件:

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

voidToolMenu(){

finalJPopupMenuToolMenu;

ToolMenu=newJPopupMenu();

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

move.setBackground(newColor(0,255,0));

ToolMenu.add(move);

buttonPanel.addMouseListener(newMouseAdapter(){

publicvoidmousePressed(MouseEvente){

if(e.getModifiers()==InputEvent.BUTTON3_MASK)

ToolMenu.show(buttonPanel,e.getX(),e.getY());

}

});

move.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if(move.isSelected()){

buttonPanel.setFloatable(true);

}else{

buttonPanel.setFloatable(false);

}

}

});

}

4.4画图区

4.4.1画图区功能设计

画图区可以绘制各种图形,可以进行擦除操作,还可以根据实际需要添加文本。

4.4.2画图区界面设计

图4.4.1画图界面

4.4.3画图区主要代码

详细代码见附录。

4.5状态栏

4.5.1状态栏功能设计

状态栏是显示鼠标的状态的信息栏,随时反馈鼠标信息。

4.5.2状态栏设计

图4.5.1状态栏显示

4.5.3状态栏代码

部分代码如下,详细代码见附录:

publicvoidmouseReleased(MouseEvente){

statusBar.setText("鼠标松开:

["+e.getX()+","+e.getY()+"]");

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

itemList[index].x1=e.getX();

itemList[index].y1=e.getY();

}

itemList[index].x2=e.getX();

itemList[index].y2=e.getY();

repaint();

index++;

createNewItem();

}

小结和展望

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

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

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

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

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

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

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

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

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

想起一句话:

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

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

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

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

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

 

参考文献

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

电子工业出版社,2011.

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

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

 

附录

使用说明书

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

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

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

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

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

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

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

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

 

源程序清单

Paint.java:

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

importjavax.swing.*;

importjavax.swing.event.UndoableEditEvent;

importjavax.swing.undo.*;

publicclassPaint{

publicstaticvoidmain(String[]args){

try{

UIManager.setLookAndFeel(UIManager.

getSystemLookAndFeelClassName());

}//加载系统界面风格

catch(Exceptione){

}

newMyPaint();

}

}

classMyPaintextendsJFrame{

JMenuBarjmenuBar;

privateObjectInputStreaminput;

privateObjectOutputStreamoutput;//定义输入输出流,用来调用和保存图像文件

privateJButtonchoices[];//按钮数组

privateStringnames[]={

"New",//新建

"Open",//打开

"Save",//保存

"Pencil",//自由画笔

"Line",//直线

"Rect",//空心矩形

"fRect",//实心矩形

"Oval",//空心椭圆

"fOval",//实心椭圆

"Circle",//圆形

"fCircle",//实心圆形

"RoundRect",//圆角矩形

"frRect",//实心圆角矩形

"3DRect",//3D矩形

"f3DRect",//实心3D矩形

"Cube",//立方体

"Rubber",//橡皮擦

"bgColor",//背景色

"Color",//画笔颜色

"Stroke",//画笔大小

"Word"//文本输入

};

GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();

StringstyleNames[]=ge.getAvailableFontFamilyNames();//加载系统字体

privateIconitems[];

privateStringtipText[]={"新建","打开","保存","自由画笔","直线","空心矩形",

"实心矩形","空心椭圆","实心椭圆","圆","实心圆","空心圆角矩形",

"实心圆角矩形","3D矩形","3D矩形","3D长方体","橡皮","设置背景色","画笔颜色",

"画笔粗细","添加文字"};//按钮提示说明

JToolBarbuttonPanel;//定义按钮面板

privateJLabelstatusBar;//显示鼠标状态的提示条

privateDrawPaneldrawingArea;//定义画图区域

privateintwidth=850,height=550;//画图区域初始大小

drawings[]itemList=newdrawings[5000];//用来存放基本图形的数组

privateintcurrentChoice=3;//设置初始画笔为自由笔画

intindex=0;//已绘制图形数目

privateColorcolor=Color.black;//画笔颜色

intR,G,B;//颜色值

intf1,f2;//存放当前字体风格

Stringstyle1;//存放当前字体

privatefloatstroke=1.0f;//设置画笔粗细

staticintthickness=10;//立方体宽度

JCheckBoxbold,italic;//定义字体风格选择框

MyUndoManagermyUndo;

JComboBoxstyles;//字体选择框

Toolkitkit=Toolkit.getDefaultToolkit();//获取Toolkit实例

Imageimage=kit.getImage("Icons/Title.jpg");//获取图片

publicMyPaint(){

setTitle("画图板1.0开发者预览版");

setLocation(200,100);//画图板窗口起始位置

setSize(850,550);//画图板大小

setVisible(true);

setIconImage(image);//设置窗体图标

setCursor(newCursor(Cursor.HAND_CURSOR));//设置画图板鼠标样式

drawingArea=newDrawPanel();

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

if(JOptionPane.showConfirmDialog(newFrame(),"你确定退出吗?

","退出提示",

JOptionPane.WARNING_MESSAGE)==JOptionPane.OK_OPTION)

System.exit(0);

}

});//关闭确认提示

getJMenuBar();//获取菜单栏

myUndo=newMyUndoManager();

items=newImageIcon[names.length];

//创建各种基本图形的按钮

choices=newJButton[names.length];

buttonPanel=newJToolBar(JToolBar.VERTICAL);

buttonPanel=newJToolBar(JToolBar.HORIZONTAL);

ButtonHandlerhandler=newButtonHandler();

ButtonHandler1handler1=newButtonHandler1();

buttonPanel.setBackground(newColor(0,255,0));//工具栏背景色设置

//导入图形图标,图标存放在项目文件夹下的Icons目录内

for(inti=0;i

items[i]=newImageIcon("Icons/"+names[i]+".gif");

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

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

choices[i].setBackground(newColor(0,255,0));//按钮背景色设置

buttonPanel.add(choices[i]);

}

ToolMenu();//工具栏右击事件调用

//将动作侦听器加入按钮里面

for(inti=3;i

choices[i].addActionListener(handler);

}

choices[0].addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

new

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

当前位置:首页 > 工作范文 > 行政公文

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

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