ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:307.56KB ,
资源ID:8491725      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8491725.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java画板实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java画板实验报告.docx

1、Java画板实验报告二、Java画板的设计一、实验名称及其要求A、实验名称:Java画板的设计B、实验要求:1.实验目的:图形界面设计。熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。2.实验要求:(1)设计图形界面添加菜单:窗口上添加各种组件及菜单,并处理组件及菜单的事件监听程序。(2)实现画板的基本功能。二、程序设计本程序完成的是一个类似于Windows画图板的绘图程序。由于不是开发和设计专业的绘图和图像制作软件,所以,完成的程序的简单功能包括以下几项:1. 新建一个空白图形文件:用于绘制新的图形。2. 打开或保存一个图形文件,便于对图形文件的管理。3. 绘制一

2、些基本的画图组件:直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等。4. 可以用鼠标在绘图面板上单击拖动进行随笔画。5. 橡皮擦:可以将已绘制好的图形擦掉。6. 添加文字:可以在绘图区域内添加文字。7. 选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。本程序中包括:宋体、隶书、华文彩云、仿宋、华文行楷、方正舒体、Times New Roman、Serif、Monospaced、SonsSerif、Garamond。当然,在下面的的程序分析中可以看到,由于我们灵活设置了字体数组,是的可以随意添加系统支持的任何字体。大大方便和简化了程序设计。8. 选择文字的

3、字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体、斜体,使用者有三种选择方式,包括:同时选中两者、只选择其中一种、两者都不选中。9. 设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩、生动活泼。10. 设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不一样的。当作用于绘制图形组件时,它的作用是改变画笔绘制线条的粗细;当作用于文字时,它的作用是改变文字的大小。由此可以看到,虽然我们的画图板程序不及那些专业的绘图程序,但是,“麻雀虽小,五脏俱全”,它已经具备了一个绘图软件所应该有的基本功能和操作。通过对本程序的分析,我们可以更加系统地学习和了解如何从

4、整体上设计和实现一个程序。(一):程序基本组成框架和结构1. 一组基本图形按钮,包括:pencil(随笔画)、line(直线)、rect(矩形)、frect(实心矩形)、oval(椭圆)、foval(实心椭圆)、circle(圆)、fcircle(实心圆)、roundrect(圆角矩形)、frrect(实心圆角矩形)、rubber(橡皮擦)、word(文字)。这些基本图形都继承于同一个父类:drawings。drawings 具有变量(属性):int x1,x2,y1,y2; /用来存放相应图形元素的坐标int R,G,B; /用来存放图形色彩颜色信息float stroke; /用来存放画笔

5、粗细int type; /用来保存图形类型String s1; /用来保存输入文字字符串String s2; /用来保存字体类型字符串同时,drawing还具有方法:void draw ( Graphics2D g2d ) ;draw()方法中用到了Java绘图里面的Graphics2D类,所有继承drawings类的图形子类都重写了此方法。这就是Java程序中类的继承的概念。它对于程序代码的重用是很重要的,将极大的方便和简略程序代码。2. 此外,程序中还包括一下三个基本操作按钮:1 新建(New):新建一个图形文件。2 打开(Open):打开一个图形文件。3 保存(Save):保存当前图形文

6、件。3. 选择颜色和设置当前画笔粗细的按钮分别为:颜色(Color)、线条粗细(Stroke)。4. 选择当前字体风格的选择框为:粗体(BOLD)、斜体(ITALIC),用以设置当前字体的风格。5. 选择当前字体的下拉式复选框为:Styles。6. 菜单条及其组成:1 文件(File)菜单项,包括:New(新建一个图形文件)、Load(打开一个图形文件)、Save(保存当前图形文件)、Exit(退出程序)。2 颜色(Color)菜单项:用来设置当前颜色。3 线条粗细(Stroke)菜单项:用来设置当前画笔粗细。4 帮助(Help)菜单项:有关的程序帮助提示。完成的程序界面效果如下图:二):画图

7、板相关操作1. 新建一个图形文件选择FileNew菜单,则清除当前所绘制的图像,回到初始画面。2. 打开已有的文件选择FileLoad菜单,则清除当前所绘制的图像,并弹出打开文件对话框要求选择要打开的文件。如下图:3. 保存选择FileSave菜单,则弹出要求保存文件对话框。4. 绘制基本图形基本图形包括以下几种:pencil:随笔画,图标为:。line:直线,图标为:。rect:矩形,图标为:。frect:实心矩形,图标为:。oval:椭圆,图标为:。foval:实心椭圆,图标为:。circle:圆,图标为:。fcircle:实心圆,图标为:。roundrect:圆角矩形,图标为:。frre

8、ct:实心圆角矩形,图标为:。Rrubber:橡皮擦,图标为:。绘图时,单击工具栏上相应图形的图标,然后用鼠标拖动,在绘图区域内进行绘图即可。5. 设置画笔大小单击工具栏上的图标,或单击StrokeSet Stroke菜单,则弹出相应的设置当前画笔粗细对话框。如下图:6. 选择颜色单击工具栏区域,或单击ColorChoose Color菜单,则弹出相应的选择当前画图颜色对话框。如下图:1. 选择字体风格在工具栏区域,可以选择相应的字体风格,有粗体、斜体和粗斜体三种可供选择。2. 选择字体在工具栏区域,可以选择字体,本程序中有如下几种字体可供选择:宋体、隶书、华文彩云、仿宋、华文行楷、方正舒体、

9、Time New Roman、Serif、Monospaced、SonsSerif、Garamond。三 :系统功能设计分析画板主要由以下几个部分组成:1. 主窗体的设计。主类(DrawPad)用来生成主界面,完成画图板的主要框架。主类由JFrame派生出来。主界面由菜单栏、工具栏和画图区域三部分组成,布局格式采用BorderLayout布局形式。2. 菜单栏和工具栏的设计。菜单栏包括文件菜单栏、颜色菜单栏、线条粗细菜单栏和提示菜单栏。其中文件菜单栏包括文件的新建、打开、保存等选项;颜色菜单栏可以进行颜色选择;线条粗细菜单栏设置线条的粗细;提示菜单栏给出提示信息。工具栏由新建、打开和保存文件按

10、钮、基本图形的按钮、选择字体风格复选框和字体下拉列表框组成。在主类中添加并对菜单栏和工具栏添加事件监听。3. 事件响应的处理。对菜单栏、工具栏和用鼠标画图的事件响应进行处理。1 菜单栏中文件的新建、打开和保存菜单事件的处理:Java把每个文件都视作顺序字节流。如果要在Java中进行文件处理,则必须用到Java.io包。这个包定义了一些流类,选用FileInputStream(从文件中读入数据)和FIleOutputStream(向文件输出数据),通过建立这些文件的对象便可以打开文件。这些流相应地从InputStream和OutputStream派生,这些文件均使用文件流,所以必须将文件结构化以

11、适应程序的要求。我们需要对保存的对象序列化,然后以输出流的方式保存。在程序中用newFile()、loadFile()和saveFile()三个函数分别实现文件的新建、打开和保存。2 工具栏事件的处理:主要有一些Button组成。我们用ButtonHandler内部类处理基本单元事件,ButtonHandler1内部类处理新建、打开和保存文件按钮,在画图类DrawPanel中定义CreateNewItem()函数处理工具栏中的画图事件。3 鼠标画图:由于画图板主要是用来画图,所以需要在程序中添加对鼠标按下、拖动、进入、退出、移动和单机事件进行监听并进行处理。内部类mouseA定义了完成鼠标按下

12、、松开、进入、退出事件响应。内部类mouseB完成鼠标拖动和移动事件响应。4. 画图的基本功能。在程序设计中用到了动态绑定,我们可以提取他们的公共属性,先建立一个父类,然后建立各个子类,继承父类中的方法并将父类中的draw函数重写。一些关于图形形状的类,最主要是用于画图、字体和橡皮擦等基本类型。如Circle、Triangle、Rectangle,它们都是有超类(Object类)派生的。在面向对象编程中,每个类都有画出自己的能力,每个类都有自己的draw函数,但每种形状的draw函数都不一样,但在绘制任何形状时,只需简单调用父类drawing的draw方法,然后让程序动态地根据对象的类型决定使

13、用哪个子类的draw方法。为了使画出的图形更加美观,我们在draw函数中使用了Graphics2D的对象的引用。这样可以在不改变原程序的情况下,添加扩展的图形,是程序变得更加强大。同时,为了文件的保存,父类实现Serialize接口,将对象线性化。四 :程序结构说明本程序主体为一个文件:QingDrawPad.java。其中包括的程序段有:1 DrawPad():构造函数,用以初始化。2 chooseColor():选择当前绘图颜色程序段。3 setStroke():设置当前画笔粗细程序段。4 loadFile():调用图形文件程序段。5 newFile():新建一个图形文件程序段。6 sav

14、eFile():保存当前所绘制图形程序段。7 creatNewItem():新建一个基本图形单元程序段。相应的内部类有:1 ButtonHandler:用来处理基本图形单元的按钮事件。2 ButtonHandler1:用来处理New、Open、Save三个操作按钮的按钮事件。3 DrawPanel:用来创建绘图区域的子类。4 MouseA:继承了MouseAdapter,用来完成鼠标相应事件的操作,如单击、松开、进入和离开等。5 MouseB:继承了MouseMotionAdapter,用来完成鼠标拖动和鼠标移动的相应事件操作。此外,还继承了父类drawings的基本图形子类,如前所述,这里不

15、再重复。五 :程序绘图效果示意图我们可以看到,整个程序界面很简洁,而且界面操作、提示内容全部是中文,一目了然。在左上方的菜单栏里有文件、颜色、线条粗细、帮助4个下拉式菜单,可以对绘图文件进行相应的操作。下面一排是工具栏的工具按钮,从左到右依次为:新建文件、打开文件、保存文件、随笔画、直线、空心矩形、实心矩形、空心椭圆、空心圆、实心圆、空心圆角矩形、实心圆角矩形、橡皮擦、颜色选择按钮、线条粗细设置按钮、文字添加按钮、粗体字体选择框、斜体字体选择框、字体选择下拉式选择框。整个工具栏是可以拖动的,可以将它拖动到程序窗口的任意位置。工具栏下面的整个白色区域就是绘图区域,即绘图面板,它的大小可以随着窗口

16、的大小自动调整。在窗口的最底部是程序设计作者标注,以及鼠标状态提示条,可以显示当前的鼠标状态,包括进出窗口、移动、单击、松开等。具体效果如下列图所示:import java.awt.*;import java.awt.geom.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class DrawPad extends JFrame / 主类,扩展了JFrame类,用来生成主界面 private ObjectInputStream input; private Ob

17、jectOutputStream output; / 定义输入输出流,用来调用和保存图像文件 private JButton choices; / 按钮数组,存放以下名称的功能按钮 private String names = New, Open, Save, / 这三个是基本操作按钮,包括新建、打开、保存 /* 下面是我们的画图板上面有的基本的几个绘图单元按钮 */ pen, line, rect, frect, oval, foval, circle, fcircle, roundrect, frect, rubber, color, stroke, word ; private Stri

18、ng styleNames = 宋体 , 隶书 , 华文彩云 , 仿宋 , 华文行楷 , 方正舒体 , Times New Roman , Serif , Monospaced , SonsSerif , Garamond ; private Icon items; private String tipText = / 这里是鼠标移动到相应按钮上面上停留时给出的提示说明条 新建一个文件, 打开一个文件, 保存当前文件, 绘制线条, 绘制直线, 绘制空心矩形, 绘制实心矩形, 绘制空心椭圆, 绘制实心椭圆, 绘制空心圆形, 绘制实心圆形, 绘制空心圆角矩形, 绘制实心圆角矩形, 橡皮擦, 选择颜

19、色, 设置线条粗细, 输入文字 ; JToolBar buttonPanel; / 定义按钮面板 private JLabel statusBar; / 显示鼠标状态的提示条 private DrawPanel drawingArea; / 画图区域 private int width = 850, height = 550; drawings itemList = new drawings5000; / 用来存放基本图形的数组 private int currentChoice = 3; / 设置默认画图状态为随笔画 int index = 0; / 当前已经绘制的图形数目 private

20、Color color = Color.black; / 当前画笔颜色 int R, G, B; / 用来存放当前色彩值 int f1, f2; / 用来存放当前字体风格 String style1; / 用来存放当前字体 private float stroke = 1.0f; / 设置画笔粗细,默认值为1.0f JCheckBox bold, italic; / bold为粗体,italic为斜体,二者可以同时使用 JComboBox styles; public DrawPad() super(绘图画板(中国风); JMenuBar bar = new JMenuBar(); / 定义菜

21、单条 JMenu fileMenu = new JMenu(文件); / 新建文件菜单条 JMenuItem newItem = new JMenuItem(新建); newItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) newFile(); / 如果被触发,则调用新建文件函数段 ); fileMenu.add(newItem); / 保存文件菜单项 JMenuItem saveItem = new JMenuItem(保存); saveItem.addActionLi

22、stener(new ActionListener() public void actionPerformed(ActionEvent e) saveFile(); / 如果被触发,则调用保存文件函数段 ); fileMenu.add(saveItem); / 打开文件菜单项 JMenuItem loadItem = new JMenuItem(打开); loadItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) loadFile(); / 如果被触发,则调用打开文件函数段

23、 ); fileMenu.add(loadItem); fileMenu.addSeparator(); / 退出菜单项 JMenuItem exitItem = new JMenuItem(退出); exitItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0); / 如果被触发,则退出画图板程序 ); fileMenu.add(exitItem); bar.add(fileMenu); / 设置颜色菜单条 JMenu colorMenu = n

24、ew JMenu(颜色); / 选择颜色菜单项 JMenuItem colorItem = new JMenuItem(选择颜色); colorItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) chooseColor(); / 如果被触发,则调用选择颜色函数段 ); colorMenu.add(colorItem); bar.add(colorMenu); / 设置线条粗细菜单条 JMenu strokeMenu = new JMenu(线条粗细); / 设置线条粗细菜单

25、项 JMenuItem strokeItem = new JMenuItem(设置线条粗细); strokeItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) setStroke(); ); strokeMenu.add(strokeItem); bar.add(strokeMenu); / 设置提示菜单条 JMenu helpMenu = new JMenu(帮助); / 设置提示菜单项 JMenuItem aboutItem = new JMenuItem(关于画板);

26、 aboutItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null,此软件仅用于测试 , 画图板说明 , JOptionPane.INFORMATION_MESSAGE); ); helpMenu.add(aboutItem); bar.add(helpMenu); items = new ImageIconnames.length; / 创建各种基本图形的按钮 drawingArea = new DrawP

27、anel(); choices = new JButtonnames.length; buttonPanel = new JToolBar(JToolBar.VERTICAL); buttonPanel = new JToolBar(JToolBar.HORIZONTAL); ButtonHandler handler = new ButtonHandler(); ButtonHandler1 handler1 = new ButtonHandler1(); / 导入我们需要的图形图标,这些图标都存放在与源文件相同的目录下面 for (int i = 3; i choices.length;

28、i+) itemsi = new ImageIcon(F:eclipseeclipseworkspaceTestsrcicon+namesi+.jpg); choicesi = new JButton( itemsi); choicesi.setToolTipText(tipTexti); buttonPanel.add(choicesi); / 将动作侦听器加入按钮里面 for (int i = 3; i choices.length - 3; i+) choicesi.addActionListener(handler); /* choices0.addActionListener(new

29、 ActionListener() public void actionPerformed(ActionEvent e) newFile(); ); choices1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) loadFile(); ); choices2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) saveFile(); );*/ choiceschoices.length - 3.addActionListener(handler1); choiceschoices.length - 2.addActionListener(handler1); choiceschoices.length - 1.addActionListener(handler1); / 字体风格选择 styles = new JComboBox(styleNames);

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

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