2022年2022年绘图java程序报告 .pdf

上传人:C****o 文档编号:39695155 上传时间:2022-09-07 格式:PDF 页数:26 大小:923.32KB
返回 下载 相关 举报
2022年2022年绘图java程序报告 .pdf_第1页
第1页 / 共26页
2022年2022年绘图java程序报告 .pdf_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《2022年2022年绘图java程序报告 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年绘图java程序报告 .pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、目录1.程序设计内容概论 1 1.1 程序设计的目的 1 1.2 程序设计的任务 1 2 设计思想 1 2.1 需求分析 1 2.2 总体设计 1 2.2.1 面板布局 1 2.2.2 实现绘画图形 2 2.2.3 填充功能 2 2.2.4 画笔的粗细及画笔的颜色变更 2 2.2.5 实现鼠标单击和鼠标拖拽进行绘图 2 2.3 编程环境 3 2.4.工具说明 3 3 系统流程 4 4 设计 UML 类图 5 5 设计层次结构树 6 6 运行结果与分析 7 7 设计总结 12 8.参考文献 13 9.附录 14 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 26 页 -1 程序设

2、计内容概论1.1 程序设计的目的本程序是一个利用GUI方法实现简单绘图功能的应用程序。1.2 程序设计的任务程序主要创建了 5 个 JRadioButton,1 个 JCheckBox,2 个 JButton以及一个 JSlider用于选择绘画功能操作。接着创建三个面板用于设计绘图的整体画板,并利用按钮监听器,滑动条和鼠标操作实现在面板上绘图的简单功能。在程序中,利用创建 JRadioButton 实现多选一绘画功能,创建 JCheckBox实现填充功能,而2 个 JButton 则分别实现颜色更变和清除画板。同时本程序使用了鼠标点击,鼠标释放和鼠标拖拽来进行画板绘画,利用鼠标点击实现初点坐标

3、获取,在绘画曲线时,主要通过鼠标拖拽实现在画板上不断绘制(不断进行末点坐标赋值初点);在绘画直线时,主要通过鼠标拖拽达到动态效果,并通过鼠标释放最终描绘出直线;在绘画矩形和圆时,主要通过鼠标拖拽达到动态效果,并通过鼠标释放最终描绘出矩形和圆;在绘画粗线时,主要通过不断重画实心圆来实现。2 设计思想2.1 需求分析2.1.1 面板布局2.1.2 实现绘画图形(曲线,直线,圆,椭圆,矩形)3.1.3 填充功能(其中包括圆的填充,椭圆圆的填充,矩形圆的填充)3.1.4 画笔的粗细及画笔的颜色变更3.1.5 实现鼠标单击和鼠标拖拽进行绘图2.2 总体设计2.2.1 面板布局主要创建 5 个 JRadi

4、oButton,1 个 JCheckBox,2 个 JButton 以及一个 JSlider,同时创建三个面板(一个面板用于绘图,一个面板用于名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 26 页 -把所有按钮及滑动条等添加进去,一个面板用于把已经添加了按钮和滑动条的面板添加进去,用于区分绘图面板和按钮面板的位置),利用盒式布局管理器将所有的组件(包括5 个 JRadioButton,1 个 JCheckBox,2 个 JButton 以及一个 JSlider)进行布局,再利用边界布局管理器对面板进行位置编排,绘图面板在中间,另一个在西边。最终完成了画板的布局。2.2.2 实现

5、绘画图形(曲线,直线,圆,椭圆,矩形)在实现绘画的功能,主要通过创建ButtonGroup 从而把所有的JRadioButton 都添加进去,从而达到在描绘图形时多选一的选择功能;利用按钮监听器,利用Object source=event.getSource()语句当source=op1 时进行曲线绘画,在实现曲线绘画的功能时,主要利用了鼠标的点击和鼠标的拖拽,通过鼠标的点击来扑捉第一个坐标点,然后利用鼠标的拖拽来不断变换第一个点的坐标(利用sx=x 和 sy=y 语句),从而将所有点都连接起来,最终实现了在画板上描绘曲线的功能;当source=op2 时进行直线绘画,在实现直线绘画的功能时,

6、主要利用了鼠标的点击,鼠标的释放和鼠标的拖拽,通过鼠标的点击来扑捉直线的第一个坐标点,然后利用鼠标的拖拽选择直线的另一个点,最终通过鼠标的释放在画板上描绘出直线来;当 source=op3 时进行圆和椭圆绘画,在实现圆和椭圆绘画的功能时,主要利用了鼠标的点击,鼠标的释放和鼠标的拖拽,通过鼠标的点击来扑捉圆和椭圆的一个坐标点,然后利用鼠标的拖拽选择圆和椭圆的大小,最终通过鼠标的释放在画板上描绘出圆和椭圆来;当 source=op4 时进行矩形绘画,在实现矩形绘画的功能时,主要利用了鼠标的点击,鼠标的释放和鼠标的拖拽,通过鼠标的点击来扑捉矩形的一个坐标点,然后利用鼠标的拖拽选择矩形的大小,最终通过

7、鼠标的释放在画板上描绘出矩形来。2.2.3 填充功能(其中包括圆的填充,椭圆圆的填充,矩形圆的填充)通过 JCheckBox创建一个按钮,利用按钮监听器决定是否要描绘填充图形,如果是则将实现赋值fill=true,否则 fill=false,然后通过布尔值判断在描绘图形时是draw 还是 fill,如果布尔值是 ture 时则实名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 26 页 -现了图形的填充。2.2.4 画笔的粗细及画笔的颜色变更画笔的粗细主要是通过不断地重画填充圆来实现,通过鼠标的拖拽不断地在画板上进行重画;而粗细则由创建的 JSlider来调节圆的半径,如果圆的半径

8、越大则所绘出的曲线越粗,反则越细;画笔的颜色变更主要通过创建的 JButton 按钮,利用按钮监听器,当按下了按钮,则实现c=JColorChooser.showDialog(right,choose,c)语句,从而把初始的画笔颜色(黑色)改变。2.2.5 实现鼠标单击和鼠标拖拽进行绘图通过语句 right.addMouseListener和语句addMouseMotionListener(new listen1()来设计在 right面板上进行鼠标单击和鼠标拖拽等绘图,通过鼠标的单击(mousePressed)获取图形的第一个点,再利用鼠标的拖拽(mouseDragged)选择图形的形状,大

9、小和方向等。2.3 编程环境本次编程的环境为JDK。2.4.工具说明本次编程工具为 UltraEdit。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 26 页 -3 系统流程 Y N Y N 开始f=1 f=2 f=3 f=4 f=5 填充fill=true 曲 线按钮直 线按钮画 圆按钮矩 形按钮粗 线按钮填充颜色清除画 笔粗细fill=false size 改变改变颜色输入颜色f=1 f=2 f=3 f=4 f=5 画出曲线画出直线画 出圆画 出矩形画 出粗线名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 26 页 -4 设计 UML 类图绘图程序 UML 类

10、图画板结束Draw1 main(args:String):void DrawPanel f:int sx:int sy:int x:int y:int fill:boolean flag:boolean mousePressed():void mouseReleased():void mouseDragged():void mouseEntered():void mouseExited():void mouseClicked():void mouseMoved():void actionPerforned():void stateChanged():void 名师资料总结-精品资料欢迎下载-名

11、师精心整理-第 6 页,共 26 页 -5 设计层次结构树JFrame JPanel(Border Layout)JPanel West-left(Vertial Box Layout)JPanel Center-right JRadioButton JRadioButton JRadioButton JRadioButton JRadioButton JCheckBox JButton JButton JSlider JLabel 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 26 页 -6 运行结果与分析6.1 整体画板展示画板分析:利用盒式布局管理器将所有的组件(包括5

12、个 JRadioButton,1个JCheckBox,2 个 JButton 以及一个 JSlider)进行布局,再利用边界布局管理器对面板进行位置编排,绘图面板在中间(Center),另一个在西边(West)。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 26 页 -6.2 用曲线、直线、圆、矩形画黑白小屋子名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 26 页 -6.3 用粗线写祝福语名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 26 页 -6.4 用填充效果画图名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 26 页 -6

13、.5.用带有颜色的画笔画图名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 26 页 -7 设计总结在本次 java 课程设计中,我设计了一个绘图应用程序。该绘图应用程序实现了画曲线,直线,画圆,画矩形和粗线功能,同时可以实现图形的填充和颜色的变换,另外还设计了一个清除画板按键,可以应用于平时一些简单的画图操作。在本绘图应用程序中,所存在的问题是图形的种类不够完善,未能实现画弧,画多边形等功能,另外一个不足的地方时整个画板只能画一种颜色的图形,未能满足更高要求的绘画需要。在本次 java 课程设计中,我收获了很多。特别是在编写 java 程序时,必须先对程序的功能进行初步的分析,

14、得到程序中每一个功能所需要用到的方法或思路,同时根据功能的相似来设计一类功能的实现,并通过某些语句的改变达到多功能效果,例如在本次设计中,分析可得圆和矩形有很大的相似度,利用drawOval 和 drawRect 的变换可以达到绘画的效果。在设计图形的填充时,我参考了本学期所学的JCheckBox方法和判断语句,有效地处理了图形的填充问题,并系统地学习了鼠标拖拽的应用。在本次设计中,最难处理的问题是用鼠标拖拽来画直线,圆和矩形,因为在使用鼠标拖拽时,会出现在画板上不断重画的效果,无法达到自己想要的效果,后来在同学的帮助和参考部分java 教科书下,成功了解决了这个问题,而在解决这个问题,使我认

15、识到学习不能只局限于课本,必要时应该要多阅读一些相关的java 书籍,从而让自己的知识面更加广,处理问题更加有效率。所以,经过本次编写绘图应用程序,使我把本学期所学的java知识充分地运用到课程设计中来,既提高了自己学习的主动性,同时为自己以后的学习打下了更深的基础。名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 26 页 -参考文献1 John Lewis、Willian Loftus,Java程序设计教程,北京:电子工业出版社,2009;2 杨树林、胡洁萍,Java语言最新实用案例教程,北京:清华大学出版社,2006;3 谭浩强,C 程序设计,北京:清华大学出版社,2008

16、。名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 26 页 -附录:import javax.swing.JFrame;public class Draw1 public static void main(String args)JFrame frame=new JFrame(Draw);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);DrawPanel draw=new DrawPanel();frame.getContentPane().add(draw);frame.pack();frame.setVisible(

17、true);import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.util.*;import javax.swing.colorchooser.*;public class DrawPanel extends JPanel private JPanel p1,right,left;private JRadioButton op1,op2,op3,op4,op5;名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 26 页 -priva

18、te JCheckBox c1;private JButton a,b;private int f=1;private int sx,sy,x,y;private boolean fill=false;private boolean flag=false;private Color c;private Point point1=null,point2=null;private JSlider slider;private JLabel label1;private int size=10;public DrawPanel()c=Color.black;right=new JPanel();le

19、ft=new JPanel();p1=new JPanel();ButtonGroup g=new ButtonGroup();op1=new JRadioButton(曲线,true);op2=new JRadioButton(直线,false);op3=new JRadioButton(画圆,false);op4=new JRadioButton(矩形,false);op5=new JRadioButton(粗线,false);g.add(op1);g.add(op2);g.add(op3);名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 26 页 -g.add(op4);

20、g.add(op5);c1=new JCheckBox(填充);a=new JButton(颜色);b=new JButton(清除);slider=new JSlider(JSlider.VERTICAL,0,25,10);slider.setMajorTickSpacing(5);slider.setMinorTickSpacing(1);slider.setPaintTicks(true);slider.setPaintLabels(true);slider.setAlignmentX(Component.LEFT_ALIGNMENT);label1=new JLabel(size:10

21、);label1.setAlignmentX(Component.LEFT_ALIGNMENT);p1.setLayout(new BoxLayout(p1,BoxLayout.Y_AXIS);p1.add(op1);p1.add(op2);p1.add(op3);p1.add(op4);p1.add(op5);名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 26 页 -p1.add(c1);c1.addActionListener(new listen3();p1.add(a);p1.add(Box.createRigidArea(new Dimension(0,10);p1

22、.add(b);a.addActionListener(new listen4();b.addActionListener(new listen5();p1.add(slider);slider.addChangeListener(new listen6();p1.add(label1);left.add(p1);right.setBackground(Color.white);op1.addActionListener(new listen2();op2.addActionListener(new listen2();op3.addActionListener(new listen2();o

23、p4.addActionListener(new listen2();op5.addActionListener(new listen2();right.addMouseListener(new listen1();right.addMouseMotionListener(new listen1();setLayout(new BorderLayout();add(right,Center);add(left,West);名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 26 页 -setBackground(Color.white);setPreferredSize(new D

24、imension(500,450);private class listen1 implements MouseListener,MouseMotionListener public void mousePressed(MouseEvent event)flag=false;point1=event.getPoint();sx=point1.x;sy=point1.y;public void mouseReleased(MouseEvent event)int x0,y0;Graphics g=right.getGraphics();switch(f)case 2:point2=event.g

25、etPoint();x=point2.x;y=point2.y;g.setColor(c);g.drawLine(sx,sy,x,y);break;case 3:point2=event.getPoint();名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 26 页 -x=point2.x;y=point2.y;x0=xsx?sx:x;y0=ysy?sy:y;g.setColor(c);if(!fill)g.drawOval(x0,y0,Math.abs(x-sx),Math.abs(y-sy);else g.fillOval(x0,y0,Math.abs(x-sx),Math

26、.abs(y-sy);break;case 4:point2=event.getPoint();x=point2.x;y=point2.y;x0=xsx?sx:x;y0=ysy?sy:y;g.setColor(c);if(!fill)g.drawRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy);else g.fillRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy);break;public void mouseEntered(MouseEvent event)public void mouseExited(MouseEvent e

27、vent)public void mouseClicked(MouseEvent event)public void mouseMoved(MouseEvent event)名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 26 页 -public void mouseDragged(MouseEvent event)int x0,y0;Graphics g=right.getGraphics();switch(f)case 1:point2=event.getPoint();x=point2.x;y=point2.y;g.setColor(c);g.drawLine(sx,sy

28、,x,y);sx=x;sy=y;break;case 2:if(!flag)point2=event.getPoint();x=point2.x;y=point2.y;g.drawLine(sx,sy,x,y);flag=true;else g.setXORMode(Color.white);g.drawLine(sx,sy,x,y);point2=event.getPoint();x=point2.x;y=point2.y;g.drawLine(sx,sy,x,y);名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 26 页 -break;case 3:if(!flag)poi

29、nt2=event.getPoint();x=point2.x;y=point2.y;x0=xsx?sx:x;y0=ysy?sy:y;if(!fill)g.drawOval(x0,y0,Math.abs(x-sx),Math.abs(y-sy);else g.fillOval(x0,y0,Math.abs(x-sx),Math.abs(y-sy);flag=true;else g.setXORMode(Color.white);x0=xsx?sx:x;y0=ysy?sy:y;if(!fill)g.drawOval(x0,y0,Math.abs(x-sx),Math.abs(y-sy);else

30、 g.fillOval(x0,y0,Math.abs(x-sx),Math.abs(y-sy);point2=event.getPoint();x=point2.x;y=point2.y;x0=xsx?sx:x;名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 26 页 -y0=ysy?sy:y;if(!fill)g.drawOval(x0,y0,Math.abs(x-sx),Math.abs(y-sy);else g.fillOval(x0,y0,Math.abs(x-sx),Math.abs(y-sy);break;case 4:if(!flag)point2=event.g

31、etPoint();x=point2.x;y=point2.y;x0=xsx?sx:x;y0=ysy?sy:y;if(!fill)g.drawRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy);else g.fillRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy);flag=true;else g.setXORMode(Color.white);x0=xsx?sx:x;y0=ysy?sy:y;if(!fill)g.drawRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy);else 名师资料总结-精品资

32、料欢迎下载-名师精心整理-第 23 页,共 26 页 -g.fillRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy);point2=event.getPoint();x=point2.x;y=point2.y;x0=xsx?sx:x;y0=ysy?sy:y;if(!fill)g.drawRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy);else g.fillRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy);break;case 5:point2=event.getPoint();x=point2.x

33、;y=point2.y;g.setColor(c);g.fillOval(x,y,size,size);break;private class listen2 implements ActionListener public void actionPerformed(ActionEvent event)名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 26 页 -Object source=event.getSource();if(source=op1)f=1;else if(source=op2)f=2;else if(source=op3)f=3;else if(source

34、=op4)f=4;else f=5;private class listen3 implements ActionListener public void actionPerformed(ActionEvent event)if(c1.isSelected()fill=true;else fill=false;private class listen4 implements ActionListener public void actionPerformed(ActionEvent event)JColorChooser colorChooser=new JColorChooser();c=J

35、ColorChooser.showDialog(right,choose,c);private class listen5 implements ActionListener 名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 26 页 -public void actionPerformed(ActionEvent event)repaint();private class listen6 implements ChangeListener public void stateChanged(ChangeEvent event)size=slider.getValue();label1.setText(size+size);名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 26 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁