画图板Java课程设计.docx
- 文档编号:5959362
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:42
- 大小:356.67KB
画图板Java课程设计.docx
《画图板Java课程设计.docx》由会员分享,可在线阅读,更多相关《画图板Java课程设计.docx(42页珍藏版)》请在冰豆网上搜索。
画图板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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 画图板 Java 课程设计