画图板Java课程设计.docx

上传人:b****6 文档编号:5959362 上传时间:2023-01-02 格式:DOCX 页数:42 大小:356.67KB
下载 相关 举报
画图板Java课程设计.docx_第1页
第1页 / 共42页
画图板Java课程设计.docx_第2页
第2页 / 共42页
画图板Java课程设计.docx_第3页
第3页 / 共42页
画图板Java课程设计.docx_第4页
第4页 / 共42页
画图板Java课程设计.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

画图板Java课程设计.docx

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

画图板Java课程设计.docx

画图板Java课程设计

《面向对象程序设计》

课程设计报告

 

题目:

画图板设计与实现

院(系):

信息科学与工程学院

专业班级:

计算机科学与技术1201班

******

学号:

***********

******

 

2014年12月29日至2015年1月9日

 

华中科技大学武昌分校制

面向对象程序设计课程设计任务书

一、设计(调查报告/论文)题目

画图板设计与实现

二、设计(调查报告/论文)主要内容

内容:

完成一个类似于windows画图板的绘画程序。

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

基本功能与要求:

1新建一个空的图形文件:

用于绘制新的图形。

2打开或保存一个图形文件,便于对图形文件的管理。

3绘制一些基本的画图组件:

直线,矩形,实心矩形,椭圆,实心椭圆,圆,实心圆,圆角矩形,实心圆角矩形等。

4可以用鼠标在绘制画板上单击拖动进行随笔画。

5橡皮擦:

可以将已绘制好的图形擦掉。

三、原始资料

1.《面向对象程序设计课程设计》指导书

2.耿祥义.JAVA大学实用教程.北京:

清华大学出版社,2009.

四、要求的设计(调查/论文)成果

1.课程设计报告

2.课程设计软件

五、进程安排

布置任务,查找资料、需求分析1天

总体设计1天

详细设计1.5天

编制源程序实现3.5天

测试与修改1天

撰写课设报告2天

六、主要参考资料

[1]张广彬.Java课程设计案例精编(第二版).北京:

清华大学出版社,2011.

[2]耿祥义.Java课程设计(第二版).北京:

清华大学出版社,2008.

[3]耿祥义.JAVA大学实用教程.北京:

清华大学出版社,2009.

[4]邹林达.陈国君Java2程序设计基础.北京:

清华大学出版社,2010.

[5]邹林达.Java2程序设计基础实验指导.北京:

清华大学,2010.

 

指导教师(签名):

 

20年月日

 

1需求与总体设计……………………………………………………………………………1

1.1需求分析………………………………………………………………………1

1.2总体设计………………………………………………………………………1

2详细设计…………………………………………………………………………………3

2.1详细设计思路………………………………………………………………………3

2.2详细主代码………………………………………………………………………4

3编码实现…………………………………………………………………………………7

4系统运行与测试………………………………………………………………………………33

总结…………………………………………………………………………………37

 

1需求与总体设计

1.1需求分析

平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有PhotoShop、Windows画图工具等,其中PhotoShop是一款非常强大的图形处理工具,windows画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:

铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。

这次试验中我做的就是一个仿照windows画板的程序。

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

1.2总体设计

总体功能图

 

 

总体设计类图

 

2详细设计

2.1详细设计思路

系统结构设计:

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

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

其中文件菜单有新建、打开、保存、另存为、退出等功能;编辑菜单有撤销、恢复等功能;设置菜单含有对画笔颜色、画笔大小等的设置功能;帮助菜单提供画图板的帮助信息。

②画图区的设计:

对图片的编辑处理区。

③工具栏的设计:

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

④其他功能设计。

总体流程图

 

2.2详细类设计

MiniDrawPad:

主类,扩展了JFrame类,用来生成主界面。

Drawings类:

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

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

1.Line类:

绘制直线;

2.Rect类:

绘制矩形;

3.fillOval类:

绘制实心椭圆;

4.fillRect类:

绘制实心矩形;

5.Oval类:

绘制椭圆;

6.Cicle类:

绘制圆;

7.fillCicle类:

绘制实心圆;

8.RoundRect类:

绘制圆角矩形;

9.fillRoundRect类:

绘制实心圆角矩形;

10.Pecil类:

自由笔;

 

ButtonHandler类:

按钮侦听器ButtonHanler类,内部类,用来侦听基本按钮的操作

ButtonHandler1类:

用来侦听颜色选择、画笔粗细设置、文字输入按钮的操作

 

checkBoxHandler类:

选择字体风格时候用到的事件侦听器类,加入到字体风格的选择框中

DrawPanel类:

画图面板类,用来画图

mouseA类:

鼠标事件mouseA类,继承了MouseAdapter,用来完成鼠标相应事件操作

mouseB类:

鼠标事件mouseB类继承了MouseMotionAdapter,用来完成鼠标拖动和鼠标移动时的相应操作

 

3编码实现

源代码

importjava.awt.*;

importjava.awt.geom.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.io.*;

importjava.util.*;

publicclassMiniDrawPadextendsJFrame{

privateObjectInputStreaminput;

privateObjectOutputStreamoutput;

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

privateJButtonchoices[];

//按钮数组,存放以下名称的功能按钮

privateStringnames[]={

"New",

//新建

"Open",

//打开

"Save",

//"保存"

/*接下来是我们的画图板上面有的基本的几个绘图单元按钮*/

"Pencil",

//铅笔画,也就是用鼠标拖动着随意绘图

"Line",

//绘制直线

"Rect",

//绘制空心矩形

"fRect",

//绘制以指定颜色填充的实心矩形

"Oval",

//绘制空心椭圆

"fOval",

//绘制以指定颜色填充的实心椭圆

"Circle",

//绘制圆形

"fCircle",

//绘制以指定颜色填充的实心圆形

"RoundRect",

//绘制空心圆角矩形

"frRect",

//绘制以指定颜色填充的实心圆角矩形

"Rubber",

//橡皮擦,可用来擦去已经绘制好的图案

"Color",

//选择颜色按钮,可用来选择需要的颜色

"Stroke",

//选择线条粗细的按钮,输入需要的数值可以实现绘图线条粗细的变化

"Word"

//输入文字按钮,可以在绘图板上实现文字输入

};

privateStringstyleNames[]=

{

"宋体","隶书","华文彩云","仿宋","华文行楷",

"方正舒体","TimesNewRoman","Serif","Monospaced",

"SonsSerif","Garamond"

};

//可供选择的字体项

//当然这里的灵活的结构可以让读者自己随意添加系统支持的字体

privateIconitems[];

privateStringtipText[]=

{

//这里是鼠标移动到相应按钮上面上停留时给出的提示说明条

//读者可以参照上面的按钮定义对照着理解

"Drawanewpicture",

"Openasavedpicture",

"Savecurrentdrawing",

"Drawatwill",

"Drawastraightline",

"Drawarectangle",

"Fillaractangle",

"Drawanoval",

"Fillanoval",

"Drawacircle",

"Fillacircle",

"Drawaroundrectangle",

"Fillaroundrectangle",

"Eraseatwill",

"Choosecurrentdrawingcolor",

"Setcurrentdrawingstroke",

"Writedownwhatuwant"

};

JToolBarbuttonPanel;

//定义按钮面板

privateJLabelstatusBar;

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

privateDrawPaneldrawingArea;

//画图区域

privateintwidth=1000,height=600;

//定义画图区域初始大小

drawings[]itemList=newdrawings[5000];

//用来存放基本图形的数组

privateintcurrentChoice=3;

//设置默认画图状态为随笔画

intindex=0;

//当前已经绘制的图形数目

privateColorcolor=Color.black;

//当前画笔颜色

intR,G,B;

//用来存放当前色彩值

intf1,f2;

//用来存放当前字体风格

Stringstyle1;

//用来存放当前字体

privatefloatstroke=1.0f;

//设置画笔粗细,默认值为1.0f

JCheckBoxbold,italic;

//定义字体风格选择框

//bold为粗体,italic为斜体,二者可以同时使用

JComboBoxstyles;

publicMiniDrawPad()

//构造函数

{

super("DrawingPad");

JMenuBarbar=newJMenuBar();

//定义菜单条

JMenufileMenu=newJMenu("文件");

fileMenu.setMnemonic('F');

//新建文件菜单条

JMenuItemnewItem=newJMenuItem("新建");

newItem.setMnemonic('N');

newItem.addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

newFile();

//如果被触发,则调用新建文件函数段

}

}

);

fileMenu.add(newItem);

//保存文件菜单项

JMenuItemsaveItem=newJMenuItem("保存");

saveItem.setMnemonic('S');

saveItem.addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

saveFile();

//如果被触发,则调用保存文件函数段

}

}

);

fileMenu.add(saveItem);

//打开文件菜单项

JMenuItemloadItem=newJMenuItem("打开");

loadItem.setMnemonic('L');

loadItem.addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

loadFile();

//如果被触发,则调用打开文件函数段

}

}

);

fileMenu.add(loadItem);

fileMenu.addSeparator();

//退出菜单项

JMenuItemexitItem=newJMenuItem("退出");

exitItem.setMnemonic('X');

exitItem.addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

System.exit(0);

//如果被触发,则退出画图板程序

}

}

);

fileMenu.add(exitItem);

bar.add(fileMenu);

//设置颜色菜单条

JMenucolorMenu=newJMenu("颜色");

colorMenu.setMnemonic('C');

//选择颜色菜单项

JMenuItemcolorItem=newJMenuItem("选择颜色");

colorItem.setMnemonic('O');

colorItem.addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

chooseColor();

//如果被触发,则调用选择颜色函数段

}

}

);

colorMenu.add(colorItem);

bar.add(colorMenu);

//设置线条粗细菜单条

JMenustrokeMenu=newJMenu("像素");

strokeMenu.setMnemonic('S');

//设置线条粗细菜单项

JMenuItemstrokeItem=newJMenuItem("设置像素");

strokeItem.setMnemonic('K');

strokeItem.addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

setStroke();

}

}

);

strokeMenu.add(strokeItem);

bar.add(strokeMenu);

//设置提示菜单条

JMenuhelpMenu=newJMenu("帮助");

helpMenu.setMnemonic('H');

//设置提示菜单项

JMenuItemaboutItem=newJMenuItem("关于");

aboutItem.setMnemonic('A');

aboutItem.addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

JOptionPane.showMessageDialog(null,

"这是一个迷你画图板!

\nCopyright(c)2014华中科技大学武昌分校",

"画图板程序说明",

JOptionPane.INFORMATION_MESSAGE);

}

}

);

helpMenu.add(aboutItem);

bar.add(helpMenu);

items=newImageIcon[names.length];

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

drawingArea=newDrawPanel();

choices=newJButton[names.length];

buttonPanel=newJToolBar(JToolBar.VERTICAL);

buttonPanel=newJToolBar(JToolBar.HORIZONTAL);

ButtonHandlerhandler=newButtonHandler();

ButtonHandler1handler1=newButtonHandler1();

//导入我们需要的图形图标,这些图标都存放在与源文件相同的目录下面

for(inti=0;i

{

//items[i]=newImageIcon(MiniDrawPad.class.getResource(names[i]+".gif"));

//如果在jbuilder下运行本程序,则应该用这条语句导入图片

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

//默认的在jdk或者jcreator下运行,用此语句导入图片

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

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

buttonPanel.add(choices[i]);

}

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

for(inti=3;i

{

choices[i].addActionListener(handler);

}

choices[0].addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

newFile();

}

}

);

choices[1].addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

loadFile();

}

}

);

choices[2].addActionListener(

newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

saveFile();

}

}

);

choices[choices.length-3].addActionListener(handler1);

choices[choices.length-2].addActionListener(handler1);

choices[choices.length-1].addActionListener(handler1);

//字体风格选择

styles=newJComboBox(styleNames);

styles.setMaximumRowCount(8);

styles.addItemListener(

newItemListener()

{

publicvoiditemStateChanged(ItemEvente)

{

style1=styleNames[styles.getSelectedIndex()];

}

}

);

//字体选择

bold=newJCheckBox("黑体字");

italic=newJCheckBox("斜体字");

checkBoxHandlercHandler=newcheckBoxHandler();

bold.addItemListener(cHandler);

italic.addItemListener(cHandler);

JPanelwordPanel=newJPanel();

buttonPanel.add(bold);

buttonPanel.add(italic);

buttonPanel.add(styles);

styles.setMinimumSize(newDimension(500,200));

styles.setMaximumSize(newDimension(1000,200));

Containerc=getContentPane();

super.setJMenuBar(bar);

c.add(buttonPanel,BorderLayout.NORTH);

c.add(drawingArea,BorderLayout.CENTER);

statusBar=newJLabel();

c.add(statusBar,BorderLayout.SOUTH);

statusBar.setText("ToTheLittleDrawingPad:

)");

createNewItem();

setSize(width,height);

show();

}

//按钮侦听器ButtonHanler类,内部类,用来侦听基本按钮的操作

publicclassButtonHandlerimplementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{

for(intj=3;j

{

if(e.getSource()==choices[j])

{

currentChoice=j;

createNewItem();

repaint();}

}

}

}

//按钮侦听器ButtonHanler1类,用来侦听颜色选择、画笔粗细设置、文字输入按钮的操作

publicclassButtonHandler1i

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

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1