Java画图板程序设计报告.docx
《Java画图板程序设计报告.docx》由会员分享,可在线阅读,更多相关《Java画图板程序设计报告.docx(36页珍藏版)》请在冰豆网上搜索。
![Java画图板程序设计报告.docx](https://file1.bdocx.com/fileroot1/2023-1/4/86b54f49-a2ba-4d51-b258-79c0bd9fe52c/86b54f49-a2ba-4d51-b258-79c0bd9fe52c1.gif)
Java画图板程序设计报告
西安科技大学
Java语言课程设计报告
题目:
画图板应用程序开发
班级:
学号:
姓名:
2010年12月
1设计题目及具体要求………………………………………………………3
2总体设计……………………………………………………………………6
3详细设计与实现……………………………………………………………4
4系统测试……………………………………………………………………11
5设计小结……………………………………………………………………31
参考文献
1、设计题目及具体要求
1.1题目需求
1.设计题目:
小画图板的开发。
2.重点分析
本软件的重难点为主窗体的设计、菜单栏和工具栏的设计、事件响应的处理、画图的基本功能的实现。
3.实现功能
1.新建一个空白图形文件:
用于绘制新的图形。
2.打开或保存一个图形文件,便于对图形文件的管理。
3.绘制一些基本的图形组件:
直线,矩形,实心矩形,椭圆,实心椭圆,圆,实心圆,圆角矩形,实心圆角矩形等。
4.用鼠标在绘图板上单击拖动进行随笔花。
5.橡皮擦:
可以将已绘制的图形擦掉。
6.添加文字:
可以在绘图区域内添加文字。
7.选择文字的字体:
通过一个下拉式的选择条,可以选中所需要的字体。
本程序中包括:
宋体,隶书,华文彩云,仿宋-GB2312,华文行楷,TimesNewRoman,Serif,Monospaced,SonsSerif,Garamond。
当然,在下面的程序分析中可以看到,由于设置了字体选择数组,使得可以随意添加系统支持的任何字体。
大大方便和简化了程序设计。
8.选择文字的字体风格:
通过两个复选框按钮,可以选择需要的字体风格,包括:
粗体,斜体,用同时选中两者,只选择其中一种或两者都不选中3种选择方式。
9.设置画笔的颜色:
可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩,生动活泼。
10.设置画笔的粗细:
该选项在作用于基本图形组件和文字时,它的效果是不同的。
当作用于绘制图形组建时,它的作用是改变画笔绘制线条的粗细;当作用于文字时,它的作用是改变文字的大小。
4.功能图
图1-1画图板应用程序功能结构图
1.2实现环境及工具简介
CPU:
IntelCore(TM)2E5300内存:
2G
运行平台:
WindowsXP主频:
2.60GHz
开发平台:
Eclipse主板:
ASUSTeKComputerINC.P5QL-ASUS-SE
Eclipse简介:
Eclipse——IBM的JavaIDE开发环境
IBM-Eclipse简介:
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
IBM-Eclipse版本历史:
Eclipse最初是由IBM公司开发的替代商业软件VisualAgeforJava的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(EclipseFoundation)管理。
2003年,Eclipse3.0选择OSGi服务平台规范为运行时架构。
2007年6月,稳定版3.3发布。
2008年6月发布代号为Ganymede的3.4版。
2009年7月发布代号为GALILEO的3.5版。
2010年6月发布代号为Helios的3.6版。
IBM-Eclips语言拓展:
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开发源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
Eclipse插件开发环境
虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
基于Eclipse的应用程序的突出例子是IBM的WebSphereStudioWorkbench,它构成了IBMJava开发工具系列的基础。
例如,WebSphereStudioApplicationDeveloper添加了对JSP、servlet、EJB、XML、Web服务和数据库访问的支持。
Eclipse的主要组成
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
EclipseSDK
EclipseSDK(软件开发者包)是EclipsePlatform、JDT和PDE所生产的组件合并,它们可以一次下载。
这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到EclipsePlatform中的工具。
EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。
Eclipse项目生产的软件以GPL发布,第三方组件有各自自身的许可协议。
2、总体设计
2.1基本图形按钮
基本图形按钮包括:
Pencil(随笔画)、Line(直线)、Rect(矩形)、fRect(实心矩形)、Oval(椭圆)、fOval(实心椭圆)、Circle(圆)、fCircle(实心圆)、RoundRect(圆角矩形)、frrect(实心圆角矩形)、Rubber(橡皮擦)、Word(字)。
基本图形都继承自同一个父类:
drawings。
Drawings具有的变量(属性):
intx1,y1,x2,y2;//用来存放相应图形元素的左边
intR,G,B;//用来存放图形色彩信息
floatstroke;//用来存放画笔粗细
inttype;//用来保存图形类型
strings1;//用来保存输入文字字符串
strings2;//用来保存字体类型字符串
同时,drawings还有方法:
Voiddraw(Graphics2Dg2d){};
draw()方法中用到了java绘图里面的Graphics2D类,所有继承drawings类的图形子类都重写此方法。
这就是Java中类继承的概念。
2.2基本操作按钮
1.New:
新建一个图形文件。
2.Open:
打开一个图形文件。
3.Save:
保存当前图形文件。
2.3菜单及其组成
1.File菜单项,包括:
New(新建一个图形文件)、Load(打开一个图形文件)、Save(保存一个图形文件)、Exit(退出程序)。
2.Color菜单项:
用来设置当前颜色。
3.Stroke菜单项:
用来设置当前画笔粗细。
4.Help菜单项:
有关的程序帮助提示。
2.4其他功能组成
1.选择颜色和设置当前画笔粗细的按钮分别为:
Color、Stroke。
2.选择当前字体风格的选择框为:
BOLD、ITALIC,用以设置当前字体的风格。
3.选择当前字体的下来是复选框为:
Styles。
2.5完成的程序界面图为:
图2-1完成的程序界面效果图
3、详细设计与实现
3.1新建一个图形文件
单击工具栏上的图标
,或选择FileNew菜单,则清除当前所绘制的图像,回到初始画面,如图4-1所示。
3.2打开已有的文件
单击工具栏上的图标
,或选择FileLoad菜单,则清除当前所绘制的图像,并弹出打开文件对话框要求选择打开的文件,如图5-1所示。
图3-1选择打开文件对话框
3.3保存
单击工具栏上的图标
,或者选择FileSave菜单,则弹出要求保存文件对话框,如图5-2所示。
图3-2保存文件对话框
3.4绘制基本图形
基本图形包括:
1.Pencil:
随笔画,图标为
。
2.Line:
直线,图标为
。
3.Rect:
矩形,图标为
。
4.fRect:
实心矩形,图标为
。
5.Oval:
椭圆,图标为
。
6.fOval:
实心椭圆,图标为
。
7.Circle:
圆,图标为
。
8.Fcircle:
实心圆,图标为
。
9.RoundRect:
圆角矩形,图标为
。
10.frRect:
实心圆角矩形,图标为
。
11.Rubber:
橡皮擦,图标为
。
画图时,单击工具栏上相应图形的图标,然后用鼠标拖动,在绘图区域内进行绘画即可。
3.5设置画笔大小
单击工具栏上的图标
,或者单击StrokeSetStroke菜单,则弹出相应的设置当前画笔粗细对话框,如图5-3所示。
图3-3设置当前画笔粗细对话框
3.6选择颜色
单击工具栏上的图标
,或单击ColorChooseColor菜单,则弹出相应的选择当前画图颜色对话框,如图5-4所示。
图3-4选择颜色对话框
3.7选择字体风格
在工具栏区域
,可以选择相应的字体风格,有粗体和斜体两种风格可供选择。
3.8选择字体
在工具栏区域
,可以选择字体,本程序中有如下几种字体可供选择:
宋体,隶书,华文彩云,仿宋-GB2312,华文行楷,TimesNewRoman,Serif,Monospaced,SonsSerif,Garamond。
3.9程序结构说明
本程序主体文件为一个文件:
MiniDrawPad.Java。
其中包括的程序段有:
1.MiniDrawPad():
构造函数,用以初始化。
2.chooseColor():
选择当前绘图颜色程序段。
3.setStroke():
设置当前画笔粗细程序段。
4.loadFile():
调用图形文件程序段。
5.newFile():
新建一个图形文件程序段。
6.saveFile():
保存当前所绘制图形程序段。
7.createNewItem():
新建一个基本图形单元程序段。
相应的内部类有:
1.ButtonHandler:
用来处理基本图形单元的按钮事件。
2.ButtonHandler1:
用来处理New、Open、Save三个操作按钮的按钮事件。
3.DrawPanel:
用老创建绘图区域的子类。
4.MouseA:
继承了MouseAdapter,用来完成鼠标相应事件的操作,如单击、松开、进入和离开等。
5.MouseB:
继承了MouseMotionAdapter,用来完成鼠标拖动和鼠标移动时的相应操作。
4、系统测试
4.1运行结果
1.主界面框架
主界面类继承自JFrame类,包括构造函数及各种功能的定义,主要代码如下:
importjava.awt.*;
importjava.awt.geom.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.*;
publicclassMiniDrawPadextendsJFrame//主类,扩展了JFrame类,用来生成主界面
{
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=800,height=550;//定义画图区域初始大小
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("File");
fileMenu.setMnemonic('F');
2.新建、保存、打开、退出菜单项
代码如下:
//新建文件菜单条
JMenuItemnewItem=newJMenuItem("New");
newItem.setMnemonic('N');
newItem.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
newFile();//如果被触发,则调用新建文件函数段
}
}
);
fileMenu.add(newItem);
//保存文件菜单项
JMenuItemsaveItem=newJMenuItem("Save");
saveItem.setMnemonic('S');
saveItem.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
saveFile();//如果被触发,则调用保存文件函数段
}
}
);
fileMenu.add(saveItem);
//打开文件菜单项
JMenuItemloadItem=newJMenuItem("Load");
loadItem.setMnemonic('L');
loadItem.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
loadFile();//如果被触发,则调用打开文件函数段
}
}
);
fileMenu.add(loadItem);
fileMenu.addSeparator();
//退出菜单项
JMenuItemexitItem=newJMenuItem("Exit");
exitItem.setMnemonic('X');
exitItem.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
System.exit(0);//如果被触发,则退出画图板程序
}
}
);
fileMenu.add(exitItem);
bar.add(fileMenu);
3.线条宽度、颜色、提示功能
代码如下:
//设置颜色菜单条
JMenucolorMenu=newJMenu("Color");
colorMenu.setMnemonic('C');
//选择颜色菜单项
JMenuItemcolorItem=newJMenuItem("ChooseColor");
colorItem.setMnemonic('O');
colorItem.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
chooseColor();//如果被触发,则调用选择颜色函数段
}
}
);
colorMenu.add(colorItem);
bar.add(colorMenu);
//设置线条粗细菜单条
JMenustrokeMenu=newJMenu("Stroke");
strokeMenu.setMnemonic('S');
//设置线条粗细菜单项
JMenuItemstrokeItem=newJMenuItem("SetStroke");
strokeItem.setMnemonic('K');
strokeItem.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
setStroke();
}
}
);
strokeMenu.add(strokeItem);
bar.add(strokeMenu);
//设置提示菜单条
JMenuhelpMenu=newJMenu("Help");
helpMenu.setMnemonic('H');
//设置提示菜单项
JMenuItemaboutItem=newJMenuItem("AboutthisDrawingPad!
");
aboutItem.setMnemonic('A');
aboutItem.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
JOptionPane.showMessageDialog(null,
"Thisisam