Java课程设计报告.docx
- 文档编号:7914882
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:19
- 大小:130.79KB
Java课程设计报告.docx
《Java课程设计报告.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
Java课程设计报告
辽宁科技大学
Java课程设计
课程名称:
画笔系统
学院系:
电信学院计算机101
学生姓名:
杨丽
指导教师:
龙艳宾
目录
一.设计题目--------------------------------------------------------------------2
1.1设计题目与要求---------------------------------------------------------------------------2
1.2设计要求------------------------------------------------------------------------------------2
二.需求分析--------------------------------------------------------------------2
三.概要设计--------------------------------------------------------------------3
3.1设计准备------------------------------------------------------------------------------------3
3.2需用的类------------------------------------------------------------------------------------3
四.详细设计--------------------------------------------------------------------3
4.1类的设计------------------------------------------------------------------------------------3
4.2类的方法介绍------------------------------------------------------------------------------4
4.3测试数据及运行结果---------------------------------------------------------------------5
五.源程序-----------------------------------------------------------------------6
六.课程设计总结-------------------------------------------------------------15
七.参考文献-------------------------------------------------------------------15
1、设计题目
1.1设计题目与要求
本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:
设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形的功能,并且在绘图。
过程中能够修改该画笔的大小以及颜色。
该画图程序还需具有橡皮擦功能以及清空整个画面的功能
1.2设计目的
本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。
通过课程设计各个项目的综合训练,培养学生实际分析问题、编程和动手能力、提高学生的综合素质。
本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。
二、需求分析
设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形的功能,并且在绘图。
过程中能够修改该画笔的大小以及颜色。
该画图程序还需具有橡皮擦功能以及清空整个画面的功能
1、这个画图程序,最基本的功能是,作为一个画笔,能利用它实现在屏幕上任意绘画、书写的功能;
2、利用这个画图程序,通过选择画直线、画圆形、画矩形等功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功能;
3、这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦能够擦除屏幕上的图案,并且此橡皮擦也应该能够改变大小;
4、这个画图程序,还应该做到能够改变画笔颜色的功能;
5、这个画图程序,还应该具备能够清除整个屏幕已绘制图画的功能。
三、概要设计
3.1设计准备
1、此程序为实现这些功能模块,必须首先定义一个工具面板,将这些画笔、画直线、画圆形、画矩形、画笔颜色、画笔大小、橡皮等功能组件放入这个工具面板中。
2、此程序为实现利用鼠标做画笔的功能,必会产生鼠标事件MouseEvent。
因此,为实现鼠标画图的功能,必须用到鼠标触发事件,故在此程序中,必须实现“委托事件模型”,用到事件源、事件对象以及监听者对象。
3、此程序中,必须用到的包如下:
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjavax.swing.*;
importjava.awt.geom.*;
3.2需用到的类
1)classPoint
此类用于定义一组数据成员,并且使用构造函数将他们分别初使化,以方便在下面的程序中使用他们。
2)classpaintboard
此类用于实现这个程序的大部分功能,在这个类中除了定义一些基本变量以及构造函数外,还定义了很多成员方法,这些成员方法将实现鼠标触发事件的一系列绘图功能。
3)publicclassPaintBrush
这个类是主类,是程序得以运行的入口。
在这个主类中定义了主方法,是该程序执行的入口。
四.详细设计
4.1类的设计
1)classPoint
在这个类中定义了用于截断的一系列标志变量,有初始坐标、颜色、工具选择等,并且在这个类中还定义了构造函数Point(intx,inty,Colorcol,inttool,intboarder),用于完成对这些变量的初始化工作。
2)classpaintboard
这个类用来实现整个程序的大部分功能,并且在这个类中定义了大部分的成员函数和成员方法,在这个类中用到的主要成员方法如下:
Publicvoidpaint(Graphicsg)
publicvoiditemStateChanged(ItemEvente)
publicvoidmouseDragged(MouseEvente)
publicvoidmousePressed(MouseEvente)
publicvoidmouseReleased(MouseEvente)
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmouseClicked(MouseEvente){}
publicvoidmouseMoved(MouseEvente){}
publicvoidactionPerformed(ActionEvente)
4.2类的方法介绍
1定义的变量:
在这个类中,首先定义了画笔的大小、画笔的颜色、画笔的粗细、橡皮的大小、工具的选择等一些变量,并且还用到了系统中自带的一些类初使化了一些面板工具对象,用于完成对面板工具、画直线、画椭圆、画矩形、橡皮擦、清除等一些工具按钮的定义。
2初使化构造函数:
在这个初使化构造函数中,首先继承了父类Frame,然后初使化了各工具按钮以及各个选择项,包括颜色选择、画笔大小选择、橡皮大小选择,并且将这些组件添加到了工具面板中,最后还对各个组件注册了事件监听者对象。
3paint()方法:
这个方法主要用于在Applet的界面中显示文字、图形和其它界面元素。
本程序中,在这个方法中,定义了一些工具选项设置,给用户选择画笔、画直线、画圆、橡皮擦等一些功能。
4itemStateChanged()方法:
这个方法用来实现的功能很简单,主要是用来改变画笔大小、画笔颜色、橡皮大小的。
在此方法中,设置了大小以及颜色的一些预选项,以供用户对大小以及颜色做出选择。
5mouseDragged()方法:
此方法是处理MouseEvent事件以实现MouseMotionListener接口的对象。
MouseMotionListener是事件监听者,mouseDragged(MouseEvente)是成员方法,代表鼠标拖动事件,在这个方法中,还用到了MouseEvent类常用成员方法:
publicintgetX()以及publicintgetY(),用来返回发生鼠标事件的X及Y的坐标。
这个方法中,主要用来控件画笔和橡皮的转换。
6mousePressed()方法:
此方法是处理MouseEvent事件以实现MouseListener接口的对象。
MouseListener是事件监听者,mouseDPressed(MouseEvente)是成员方法,代表鼠标按下事件。
这个方法主要用来控件用户画直线、画圆、画矩形这些功能之间的转换。
⑦mouseReleased()方法:
mouseEntered()方法:
mouseExited()方法:
mouseClicked()方法:
这些方法和mousePressed()方法属于同一类,他主要用来表示鼠标释放事件,是对上述各个功能完成后对鼠标事件的又一次触发。
4.3.测试数据及运行结果
1、画笔在屏幕上绘画
2、改变画笔的粗细
3、画直线、画圆、画矩形
五.源程序
/*PaintBrush.java,可调画笔粗细-Java画图实验-swingcode-gcode
*画直线,曲线,矩形,椭圆,可调颜色,有橡皮擦功能
*可调画笔粗细
*hxz*/
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjavax.swing.*;
importjava.awt.geom.*;
classPoint
{
intx,y;
Colorcol;
inttool;
intboarder;
Point(intx,inty,Colorcol,inttool,intboarder)
{
this.x=x;
this.y=y;
this.col=col;
this.tool=tool;
this.boarder=boarder;
}
}
/*
*BasicStroke
*Choice
*validate();
**/
classpaintboardextendsFrameimplementsActionListener,MouseMotionListener,MouseListener,ItemListener
{
intxx0=0,yy0=0;
intxx1=0,yy1=0;
inttype=6;
intx=-1,y=-1;
intcon=1;//画笔大小
intEcon=5;//橡皮大小
inttoolFlag=0;//toolFlag:
工具标记
//toolFlag工具对应表:
//(0--画笔);(1--橡皮);(2--清除);
//(3--直线);(4--圆);(5--矩形);
Colorc=newColor(0,0,0);//画笔颜色
BasicStrokesize=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细
Pointcutflag=newPoint(-1,-1,c,6,con);//截断标志
VectorpaintInfo=null;//点信息向量组
intn=1;
//*工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/
PaneltoolPanel;
Buttoneraser,drLine,drCircle,drRect;
Buttonclear,pen;
ChoiceColChoice,SizeChoice,EraserChoice;
Buttoncolchooser;
Label颜色,大小B,大小E;
paintboard(Strings)//构造函数
{
super(s);
addMouseMotionListener(this);
addMouseListener(this);
paintInfo=newVector();
/*各工具按钮及选择项*/
//颜色选择
ColChoice=newChoice();
ColChoice.add("黑色");
ColChoice.add("红色");
ColChoice.add("蓝色");
ColChoice.add("绿色");
ColChoice.addItemListener(this);
//画笔大小选择
SizeChoice=newChoice();
SizeChoice.add("1");
SizeChoice.add("3");
SizeChoice.add("5");
SizeChoice.add("7");
SizeChoice.add("9");
SizeChoice.addItemListener(this);
//橡皮大小选择
EraserChoice=newChoice();
EraserChoice.add("2");
EraserChoice.add("3");
EraserChoice.add("4");
EraserChoice.add("5");
EraserChoice.addItemListener(this);
toolPanel=newPanel();
clear=newButton("清除");
eraser=newButton("橡皮");
pen=newButton("画笔");
drLine=newButton("画直线");
drCircle=newButton("画圆形");
drRect=newButton("画矩形");
colchooser=newButton("显示调色板");
//各组件事件监听
clear.addActionListener(this);
eraser.addActionListener(this);
pen.addActionListener(this);
drLine.addActionListener(this);
drCircle.addActionListener(this);
drRect.addActionListener(this);
colchooser.addActionListener(this);
颜色=newLabel("画笔颜色",Label.CENTER);
大小B=newLabel("画笔大小",Label.CENTER);
大小E=newLabel("橡皮大小",Label.CENTER);
//面板添加组件
toolPanel.add(pen);
toolPanel.add(drLine);
toolPanel.add(drCircle);
toolPanel.add(drRect);
toolPanel.add(颜色);toolPanel.add(ColChoice);
toolPanel.add(大小B);toolPanel.add(SizeChoice);
toolPanel.add(colchooser);
toolPanel.add(eraser);
toolPanel.add(大小E);toolPanel.add(EraserChoice);
toolPanel.add(clear);
//工具面板到APPLET面板
add(toolPanel,BorderLayout.NORTH);
setBounds(60,60,800,650);
setVisible(true);
validate();
//dialogforsaveandload
addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{System.exit(0);}
});
}
publicvoidpaint(Graphicsg)
{
Graphics2Dg2d=(Graphics2D)g;
Pointp1,p2;
n=paintInfo.size();
if(toolFlag==2)
g.clearRect(0,0,getSize().width,getSize().height);//清除
switch(type)
{
case3:
Line2Dline=newLine2D.Double(xx0,yy0,xx1,yy1);
g2d.draw(line);
break;
case4:
Ellipse2Dellipse1=newEllipse2D.Double(xx0,yy0,Math.abs(xx1-xx0),Math.abs(yy1-yy0));
g2d.draw(ellipse1);
break;
case5:
Rectangle2Drect1=newRectangle2D.Double(xx0,yy0,Math.abs(xx1-xx0),Math.abs(yy1-yy0));
g2d.draw(rect1);
break;
default:
break;
}
for(inti=0;i { p1=(Point)paintInfo.elementAt(i); p2=(Point)paintInfo.elementAt(i+1); size=newBasicStroke(p1.boarder,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);g2d.setColor(p1.col); g2d.setStroke(size); if(p1.tool==p2.tool) { switch(p1.tool) { case0: //画笔 Line2Dline1=newLine2D.Double(p1.x,p1.y,p2.x,p2.y); g2d.draw(line1); break; case1: //橡皮 g.clearRect(p1.x,p1.y,p1.boarder,p1.boarder); break; case3: //画直线 Line2Dline2=newLine2D.Double(p1.x,p1.y,p2.x,p2.y); g2d.draw(line2); break; case4: //画圆 Ellipse2Dellipse=newEllipse2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y)); g2d.draw(ellipse); break; case5: //画矩形 Rectangle2Drect=newRectangle2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y)); g2d.draw(rect); break; case6: //截断,跳过 i=i+1; break; default: break; }//endswitch }//endif }//endfor } publicvoiditemStateChanged(ItemEvente) { if(e.getSource()==ColChoice)//预选颜色 { Stringname=ColChoice.getSelectedItem(); if(name=="黑色") {c=newColor(0,0,0);} elseif(name=="红色") {c=newColor(255,0,0);} elseif(name=="绿色") {c=newColor(0,255,0);} elseif(name=="蓝色") {c=newColor(0,0,255);} } elseif(e.getSource()==SizeChoice)//画笔大小 { Stringselected=SizeChoice.getSelectedItem(); if(selected=="1") { con=1; size=newBasicStroke(con,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); } elseif(selected=="3") { con=3; size=newBasicStroke(con,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); } elseif(selected=="5") { con=5; size=newBasicStroke(con,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); } elseif(selected=="7") { con=7; size=newBasicStroke(con,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); } elseif(selected=="9") { con=9; size=newBasicStroke(con,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); } } elseif(e.getSource()==EraserChoice)//橡皮大小 { StringEsize=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 报告