画图板毕业课程设计报告.docx
- 文档编号:29085274
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:23
- 大小:35.35KB
画图板毕业课程设计报告.docx
《画图板毕业课程设计报告.docx》由会员分享,可在线阅读,更多相关《画图板毕业课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
画图板毕业课程设计报告
(此文档为word格式,下载后您可任意编辑修改!
)
合肥学院
计算机科学与技术系
课程设计报告
2011~2012学年第一学期
课程
Java语言基础
课程设计名称
画图板
专业班级
08网络工程一班
姓名
卢迅
指导教师
金莹,郭昌建
2011年9月
一、需求分析
演示程序为用户可以用画笔画出各种图形,输入文字,橡皮等各种功能,并且可以保存用户编辑的图片,可以打开本地图片,设置画笔与面板背景的颜色。
(1)能用拖橡皮檫的手法绘制各类图形(直线、椭圆、矩形、文字)
(2)支持画笔颜色、文字大小设置;
(3)能将画面中的所有图形存储到文件中;
(4)能从文件读取图形进行增补;
(5)采用对话框获取图形文件名;
(6)利用鼠标选取图形,删除;
由以上设计要求可以分析出程序主要是要先使用java图形界面编辑的方法设计出一个图形界面,设计出的图形界面要包含一个菜单条JMenuBar,而这个菜单条又包含有几个菜单如:
MenuFile(用于文件的打开,保存,新建,另存为,退出),MenuSight(包括工具箱和状态栏,主要用于控制工具栏和鼠标点坐标的显示和隐藏),MenuColor(用于画笔和面板背景颜色的设置),MenuHelp(给用户提供一些通知,可有可无),其中为了方便用户比较容易的通过MenuSight控制工具栏和状态栏,我们将工具栏和状态栏的菜单项用JcheckBoxMenuItem设计,这个是可以被选定或取消选定的菜单项。
如果被选定,菜单项的旁边通常会出现一个复选标记。
如果未被选定或被取消选定,菜单项的旁边就没有复选标记。
二、设计
1、设计思想
关于主要的设计就是Java中有关图形界面的编程,因此程序中设计时包括相关组件的选取,界面的布局方式,事件的监听以及对触发事件的的处理。
在程序中选取的组件JMenuBar,JCheckBoxMenuItem,JButton,JToggleButton,JToolBar,JfileChooser,JFrame等。
布局方式主要是边界布局,在程序中实现的事件监听有动作事件,窗口事件,键盘事件等,使用这些事件分别用来实现程序中规定的功能。
2、功能设计
本程序主要功能就是通过一个图形界面实现对图形的编辑,可以对原来存在的文件打开,并对输入后可以生成文件并保存。
关于这些功能的实现可以使用JFileChooser组件,其中的方法可以实现对打开或者保存的文件显示出文件名和存储路径等功能,符合设计要求
对于画笔和面板背景颜色的编辑可以使用JColorChooser提供一个用于允许用户操作和选择颜色的控制器窗格,然后调用JcolorChooser的showDialog()方法就可以调出画笔和背景颜色的编辑了
3、详细设计
(1)程序主界面是一个窗口,在程序设计了一个类MyWindowsPlot,它继承了JFrame类,作用是显示出一个窗口,在这个窗口中分别添加相关组件,设计布局方式,并对相关组件进行事件监听。
主要代码如下:
FileselFiles;
Imageimg;
publicJPanelcontentPane;
BufferedImageimage;
publicColorbgColor=newColor(255,255,255);
publicColorpColor=newColor(0,0,0);
BorderLayoutBorderLayout1=newBorderLayout();
JMenuBarjMenuBar1=newJMenuBar();
JMenuMenuFile=newJMenu();
JMenuItemMenuNew=newJMenuItem();
JMenuItemMenuOpen=newJMenuItem();
JMenuItemMenuSave=newJMenuItem();
JMenuItemMenuSaveAs=newJMenuItem();
JMenuItemMenuExit=newJMenuItem();
JMenuMenuSight=newJMenu();
JMenuMenuColor=newJMenu();
JMenuItemMenuEditColor=newJMenuItem();
JMenuItemMenuEditPencilColor=newJMenuItem();
JMenuMenuHelp=newJMenu();
JMenuItemMenuHelpText=newJMenuItem();
JMenuItemMenuAbout=newJMenuItem();
JMenumenuColour=newJMenu();
JMenuItemitemNative=newJMenuItem();
JMenuItemitemMotif=newJMenuItem();
JMenuItemitemMetal=newJMenuItem();
JCheckBoxMenuItemtool=newJCheckBoxMenuItem("工具箱(T)");
JCheckBoxMenuItemstate=newJCheckBoxMenuItem("状态栏(F)");
JToolBarjToolBar1=newJToolBar();
JButtonjbNew=newJButton();
JButtonjbSave=newJButton();
JButtonjbOpen=newJButton();
JToggleButtonjbPencil=newJToggleButton();
JToggleButtonjbBrush=newJToggleButton();
JToggleButtonjbBeeline=newJToggleButton();
JToggleButtonjbRotundity=newJToggleButton();
JToggleButtonjbPolygon=newJToggleButton();
JToggleButtonjbRect=newJToggleButton();
JToggleButtonjbFillRotundity=newJToggleButton();
JToggleButtonjbFillRect=newJToggleButton();
JToggleButtonjbFillPolygon=newJToggleButton();
JLabeljLabel1=newJLabel();
ImageIconimageNew=newImageIcon(MyWindowsPlot.class.getResource("New24.gif"));
ImageIconimageSave=newImageIcon(MyWindowsPlot.class.getResource("Save24.gif"));
ImageIconimageOpen=newImageIcon(MyWindowsPlot.class.getResource("Open24.gif"));
ImageIconimageFill=newImageIcon(MyWindowsPlot.class.getResource("Fill.gif"));
ImageIconimageBrush=newImageIcon(MyWindowsPlot.class.getResource("Brush.gif"));
ImageIconimageBeeline=newImageIcon(MyWindowsPlot.class.getResource("Beeline.gif"));
ImageIconimageRotundity=newImageIcon(MyWindowsPlot.class.getResource("Rotundity.gif"));
ImageIconimagePolygon=newImageIcon(MyWindowsPlot.class.getResource("Polygon.gif"));
ImageIconimageRect=newImageIcon(MyWindowsPlot.class.getResource("Rect.gif"));
ImageIconimageAbout=newImageIcon(MyWindowsPlot.class.getResource("About24.gif"));
ImageIconimageFillRect=newImageIcon(MyWindowsPlot.class.getResource("fillRect.gif"));
ImageIconimageFillOval=newImageIcon(MyWindowsPlot.class.getResource("fillOval.gif"));
ImageIconimageFillPolygon=newImageIcon(MyWindowsPlot.class.getResource("fillPolygon.gif"));
staticImagewindowsIcon=Toolkit.getDefaultToolkit().getImage(MyWindowsPlot.class.getResource("12.gif"));
ButtonGroupcbg;
MyActionListenermaListener;
MyItemListenermiListener;
设置画笔颜色变量
publicColor[]drawLineColor=newColor[10000];
publicColor[]drawOvalColor=newColor[10000];
publicColor[]drawRectColor=newColor[10000];
publicColor[]fillRectColor=newColor[10000];
publicColor[]fillOvalColor=newColor[10000];
绘制直线的变量
publicintcountDrawLine=0;
publicintmousePressedDrawLineX[]=newint[10000],mousePressedDrawLineY[]=newint[10000];
publicintmouseReleasedDrawLineX[]=newint[10000],mouseReleasedDrawLineY[]=newint[10000];
绘制矩行的变量
publicintcountDrawRect=0;
publicintmousePressedDrawRectX[]=newint[10000],mousePressedDrawRectY[]=newint[10000];
publicintmouseReleasedDrawRectX[]=newint[10000],mouseReleasedDrawRectY[]=newint[10000];
publicintmouseDraggedDrawRectX=0,mouseDraggedDrawRectY=0;
绘制圆形的变量
publicintcountDrawOval=0;
publicintmouseDraggedDrawOvalX=0,mouseDraggedDrawOvalY=0;
publicintmouseReleasedDrawOvalX[]=newint[10000],mouseReleasedDrawOvalY[]=newint[10000];
publicintmousePressedDrawOvalX[]=newint[10000],mousePressedDrawOvalY[]=newint[10000];
绘制填充圆形的变量
publicintcountFillOval=0;
publicintmouseDraggedFillOvalX=0,mouseDraggedFillOvalY=0;
publicintmouseReleasedFillOvalX[]=newint[10000],mouseReleasedFillOvalY[]=newint[10000];
publicintmousePressedFillOvalX[]=newint[10000],mousePressedFillOvalY[]=newint[10000];
绘制多边形的变量
publicintcountDrawPolygon=0;
publicintmousePressedDrawPolygonX[]=newint[10000],mousePressedDrawPolygonY[]=newint[10000];
绘制填充多边形的变量
publicintcountFillPolygon=0;
publicintmousePressedFillPolygonX[]=newint[10000],mousePressedFillPolygonY[]=newint[10000];
绘制填充矩形的变量
publicintcountFillRect=0;
publicintmousePressedFillRectX[]=newint[10000],mousePressedFillRectY[]=newint[10000];
publicintmouseReleasedFillRectX[]=newint[10000],mouseReleasedFillRectY[]=newint[10000];
publicintmouseDraggedFillRectX=0,mouseDraggedFillRectY=0;
绘制画笔的变量
GeneralPath对象实例
GeneralPathgPath=newGeneralPath();
PointpencilPoint;
绘制擦皮的变量
publicintcountDrawBrush=0;
publicintmouseDrawBrushX[]=newint[10000],mouseDrawBrushY[]=newint[10000];
绘制图形的监听器
MouseListenermlOneDrawRect,mlTwoDrawRect,mlOneFillRect,mlTwoFillRect;
MouseMotionListenermmlDrawRect,mmlFillRect;
MouseListenermlOneDrawLine,mlTwoDrawLine;
MouseListenermlOneDrawOval,mlTwoDrawOval,mlOneFillOval,mlTwoFillOval;
MouseMotionListenermmlDrawOval,mmlFillOval;
MouseListenermlOneDrawPolygon,mlOneFillPolygon;
MouseListenermlOneDrawPencil;
MouseMotionListenermmlDrawPencil;
MouseListenermlOneDrawBrush;
MouseMotionListenermmlDrawBrush;
contentPane.setLayout(BorderLayout1);
contentPane.setBackground(bgColor);
setJMenuBar(jMenuBar1);
setSize(newDimension(750,550));
setTitle("WindowsPlot画图板");
MenuFile.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuFile.setText("文件(F)");
MenuFile.setMnemonic('F');
MenuNew.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuNew.setText("新建(N)");
MenuNew.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK,false));
MenuNew.setActionCommand("NewPage");
MenuOpen.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuOpen.setText("打开(O)");
MenuOpen.setAccelerator(KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK,false));
MenuOpen.setActionCommand("MenuOpen");
MenuSave.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuSave.setText("保存(S)");
MenuSave.setAccelerator(KeyStroke.getKeyStroke('S',java.awt.Event.CTRL_MASK,false));
MenuSave.setActionCommand("MenuSave");
MenuSaveAs.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuSaveAs.setText("另存为(A)");
MenuSaveAs.setAccelerator(KeyStroke.getKeyStroke('A',java.awt.Event.CTRL_MASK,false));
MenuSaveAs.setActionCommand("MenuSaveAs");
MenuExit.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuExit.setText("退出(E)");
MenuExit.setAccelerator(KeyStroke.getKeyStroke('E',java.awt.Event.CTRL_MASK,false));
MenuExit.setActionCommand("Exit");
MenuSight.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuSight.setText("查看(V)");
MenuSight.setMnemonic('V');
MenuColor.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
tool.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
tool.setAccelerator(KeyStroke.getKeyStroke('T',java.awt.Event.CTRL_MASK,false));
state.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
state.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,false));
MenuColor.setText("颜色(C)");
MenuColor.setMnemonic('C');
MenuEditColor.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuEditColor.setText("背景颜色(B)");
MenuEditColor.setAccelerator(KeyStroke.getKeyStroke('B',java.awt.Event.CTRL_MASK,false));
MenuEditColor.setActionCommand("EditColor");
MenuEditPencilColor.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuEditPencilColor.setText("画笔颜色(P)");
MenuEditPencilColor.setAccelerator(KeyStroke.getKeyStroke('P',java.awt.Event.CTRL_MASK,false));
MenuEditPencilColor.setActionCommand("EditPencilColor");
itemMetal.setActionCommand("itemMetal");
MenuHelp.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuHelp.setText("帮助(H)");
MenuHelp.setMnemonic('H');
MenuHelpText.setFont(newjava.awt.Font("宋体",Font.PLAIN,13));
MenuHelpText.setText("帮助主题(H)");
MenuHelpText.setAccelerator(KeyStroke.getKeyStroke('H',java.awt.Event.CTRL_MASK,false));
MenuHelpText.setActionCommand("MenuHelpText");
MenuAbout.setFont(newjava
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 画图板 毕业 课程设计 报告