java课设-用菜单按钮控制绘图_第1页
java课设-用菜单按钮控制绘图_第2页
java课设-用菜单按钮控制绘图_第3页
java课设-用菜单按钮控制绘图_第4页
java课设-用菜单按钮控制绘图_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

复习、巩固Java语言的基础知识进一步加深对Java语言的理解和掌握课程设计为学生提供了一个既动手又动脑、独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力,培养学生在项目开辟中团队合作精神、创新意识及能力。实现简单绘图功能,具体要求:画直线,画空心或者实心椭圆、画空心或者实心矩形、画多边形(图形的位置和大小可在程序中设定)。本学期对于java语言的学习,本程序运用图形界面和绘图功能,均已学过利用Eclipse工具,采用java语言解决问题。用菜单和按钮控制绘图程序设置图形参数 菜单绘制图形 按钮绘制图形主菜单直空实空实多线心心心心边多椭直矩椭椭矩矩形边圆线形圆圆形形形直多空实线空实边心心心心形椭椭矩矩圆圆形形运行程序,输入图形类型,并输入两个坐标参数(不超过界面的大小),再选择程序界面上方相应所需的菜单选项或者下方的按钮,得到所需图形,完成功能的实现。/图形界面的实现(图形界面包括2个标签,4个菜单,6个按钮,5个文本组件)//导入程序所需要的包importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassDrawextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;privatestaticfinalintWIDTH=600;privatestaticfinalintHEIGHT=600;JMenuBarmenubar;JMenumenu1,menu2,menu3,menu4;JMenuItemitem1,item2,item3,item4,item5,item6;JButtonbutton1,button2,button3,button4,button5,button6;JLabellabel1;Mypanelpane1=newMypanel();DrawCanvasJD=null;//将图形界面设为名为“控制绘图”且长宽都为600的图形界面。publicDraw(){super("控制绘图");setSize(WIDTH,HEIGHT);Containerc=getContentPane();JD=newDrawCanvas();JPanelpane2=newJPanel();Compent(c,pane2);}privatevoidCompent(Containerc,JPanelpane2){menubar=newJMenuBar();menu1=newJMenu("直线");menu2=newJMenu("椭圆");menu3=newJMenu("矩形");menu4=newJMenu("多边形");item1=newJMenuItem("直线");item2=newJMenuItem("空心椭圆");item3=newJMenuItem("实心椭圆");item4=newJMenuItem("空心矩形");item5=newJMenuItem("实心矩形");item6=newJMenuItem("多边形");item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);item4.addActionListener(this);item5.addActionListener(this);item6.addActionListener(this);label1=newJLabel("");menu1.add(item1);menu2.add(item2);menu2.addSeparator();menu2.add(item3);menu3.add(item4);menu3.addSeparator();menu3.add(item5);menu4.add(item6);menubar.add(menu1);menubar.add(menu2);menubar.add(menu3);menubar.add(menu4);setJMenuBar(menubar);button1=newJButton("直线");button2=newJButton("空心椭圆");button3=newJButton("实心椭圆");button4=newJButton("空心矩形");button5=newJButton("实心矩形");button6=newJButton("多边形");pane2.add(button1);pane2.add(button2);pane2.add(button4);pane2.add(button6);pane2.add(label1);pane2.add(button3);pane2.add(button5);button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);button6.addActionListener(this);c.add(pane1,BorderLayout.NORTH);c.add(pane2,BorderLayout.SOUTH);c.add(JD,BorderLayout.CENTER);pane2.setLayout(newGridLayout(2,5,20,10));}/*Draw继承了JFrame,因此可以显示,首先声明标签、菜单、按钮和一个JFrame窗口。然后通过构建标签、菜单、按钮菜单项添加到菜单中。标签、菜单、按钮添加到窗口容器中,设置容器的大小及添加按钮和菜单事件监听者。*//*处理事件监听器事件*/publicvoidactionPerformed(ActionEvente){intx1,y1,x2,y2;x1=Integer.parseInt(pane1.getA().getText());y1=Integer.parseInt(pane1.getB().getText());x2=Integer.parseInt(pane1.getC().getText());y2=Integer.parseInt(pane1.getD().getText());intx3[]={280,120,50,90,210,280};intx4[]={20,50,100,110,70,20};intn=5;//当监听器监听到鼠标点击菜单项实心椭圆时,绘制实心椭圆图形elseif(e.getSource()==item3){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(1);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击菜单项直线时,绘制直线图形//当监听器监听到鼠标点击菜单项空心椭圆时,绘制空心椭圆图形//当监听器监听到鼠标点击菜单项空心矩形时,绘制空心矩形图形//当监听器监听到鼠标点击菜单项实心矩形时,绘制实心矩形图形//当监听器监听到鼠标点击菜单项多边形时,绘制多边形图形//当监听器监听到鼠标点击按钮直线时,绘制直线图形if(e.getSource()==button1){if(JD!=null){JD.setLine(1);JD.setOval(0);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击按钮空心椭圆时,绘制空心椭圆图形//当监听器监听到鼠标点击按钮实心椭圆时,绘制实心椭圆图形//当监听器监听到鼠标点击按钮空心矩形时,绘制空心矩形图形//当监听器监听到鼠标点击按钮实心矩形时,绘制实心矩形图形//当监听器监听到鼠标点击按钮多边形时,绘制多边形图形//3.主函数的实现://在主函数中创建了一个jf窗口用于产生图形界面。设置其可见和大小不可改变属性publicstaticvoidmain(String[]args){JFramejf=newDraw();jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setResizable(false);jf.setVisible(true);}}//图形绘制的实现//导入该程序所需要的包importjava.awt.*;importjavax.swing.*;//DrawCanvas实现图形的绘制(直线

空心椭圆

实心椭圆

空心矩形

实心矩形

多边形)。publicclassDrawCanvasextendsJPanel{privatestaticfinallongserialVersionUID=1L;intx1,y1,x2,y2;intline,oval,filloval,rect,fillrect,polygon;intx3[],x4[],n;publicvoidsetPosition(intx1,inty1,intx2,inty2){this.x1=x1;this.y1=y1;this.x2=x2;this.y2=y2;}publicvoidsetPolPosition(intx3[],intx4[],intn){this.x3=x3;this.x4=x4;this.n=n;}publicvoidsetLine(intline){this.line=line;}publicvoidsetOval(intoval){this.oval=oval;}publicvoidsetfillOval(intfilloval){this.filloval=filloval;}publicvoidsetRect(intrect){this.rect=rect;}publicvoidsetfillRect(intfillrect){this.fillrect=fillrect;}publicvoidsetPolygon(intpolygon){this.polygon=polygon;}publicvoidpaintComponent(Graphicsg){g.setColor(getBackground());g.fillRect(0,0,this.getWidth(),this.getHeight());g.setColor(Color.black);if(line==1){g.drawLine(x1,y1,x2,y2);}elseif(oval==1){g.drawOval(x1,y1,x2,y2);}elseif(filloval==1){g.fillOval(x1,y1,x2,y2);}elseif(rect==1){g.drawRect(x1,y1,x2,y2);}elseif(fillrect==1){g.fillRect(x1,y1,x2,y2);}elseif(polygon==1){g.drawPolygon(x3,x4,n);}}}//设置参数的实现//导入程序所需的包importjava.awt.*;importjavax.swing.*;//Mypanel类中声明了标签并使得通过创建该类的实例将其添加到图形界面中publicclassMypanelextendsJPanel{privatestaticfinallongserialVersionUID=1L;Labellabel1,label2,label3,label4;TextFielda,b,c,d,x;Mypanel(){label2=newLabel("请输入:");label1=newLabel("参数");/*参数最大可设置4位无非上面的图象界面中设置的大小为600600。故此设置的大小不应该超过600600600600。*/x=newTextField(4);a=newTextField(4);b=newTextField(4);c=newTextField(4);d=newTextField(4);add(label2);add(x);add(label1);add(a);add(b);add(c);add(d);}publicTextFieldgetA(){returna;}publicvoidsetA(TextFielda){this.a=a;}publicTextFieldgetB(){returnb;}publicvoidsetB(TextFieldb){this.b=b;}publicTextFieldgetC(){returnc;}publicvoidsetC(TextFieldc){this.c=c;}publicTextFieldgetD(){returnd;}publicvoidsetD(TextFieldd){this.d=d;}}/*应该注意的是,多边形的参数是数组型给出,故为了简便,程序中已经设置好多变形的参数,不论输入的参数是什么,显示的还是代码中已经设置好的参数的那个多边形。参数一二位为图形起点位置坐标,三四位位图形终点坐标分别为图形的左上角和右下角。*/例一:输入“直线”和参数,选择直线菜单项,绘制图线为直线。例二:输入“空心椭圆”和参数,选择下方空心椭圆按钮,绘制图形为空心椭圆。例三:输入“实心矩形”和参数,选择下方实心矩形按钮,绘制图形为实心矩形。例四:输入“多边形”和参数,选择多边形菜单项,绘制图形为多边形。结果分析:1、当输入“直线”,并输入起始两点坐标参数,点击直线菜单项或者直线按钮时,绘制图形为直线。2、当输入“空心椭圆”,并输入两点坐标参数,点击空心椭圆菜单项或者空心椭圆按钮时,绘制图形为空心椭圆。3、当输入“实心椭圆”,并输入两点坐标参数,点击实心椭圆菜单项或者实心椭圆时按钮,绘制图形为实心椭圆。4、当输入“空心矩形”,并输入对角线两点坐标参数,点击空心矩形菜单项或者空心矩形按钮时,绘制图形为空心矩形。5、当输入“实心矩形”,并输入对角线两点坐标参数,点击实心矩形菜单项或者实心矩形按钮时,绘制图形为实心矩形。6、当输入“多边形”,并输入两点坐标参数,点击多边形菜单项或者多边形按钮时,绘制图形为多边形。附录一:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassDrawextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;privatestaticfinalintWIDTH=600;privatestaticfinalintHEIGHT=600;//界面大小JMenuBarmenubar;//菜单条JMenumenu1,menu2,menu3,menu4;//菜单JMenuItemitem1,item2,item3,item4,item5,item6;//菜单项JButtonbutton1,button2,button3,button4,button5,button6;JLabellabel1;Mypanelpane1=newMypanel();DrawCanvasJD=null;//将图形界面设为名为“控制绘图”且长宽都为600的图形界面。publicDraw(){super("控制绘图"); //创建标题;setSize(WIDTH,HEIGHT);Containerc=getContentPane(); //初始化容器;JD=newDrawCanvas();JPanelpane2=newJPanel();Compent(c,pane2);}privatevoidCompent(Containerc,JPanelpane2){menubar=newJMenuBar();menu1=newJMenu("直线");menu2=newJMenu("椭圆");menu3=newJMenu("矩形");menu4=newJMenu("多边形");//构造一个新JMenu,用提供的字符串作为其文本;item1=newJMenuItem("直线");item2=newJMenuItem("空心椭圆");item3=newJMenuItem("实心椭圆");item4=newJMenuItem("空心矩形");item5=newJMenuItem("实心矩形");item6=newJMenuItem("多边形");item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);item4.addActionListener(this);item5.addActionListener(this);item6.addActionListener(this);label1=newJLabel("");menu1.add(item1);menu2.add(item2);menu2.addSeparator();menu2.add(item3);menu3.add(item4);menu3.addSeparator(); //往菜单、对象条中到场一条横线,完成份组功效;menu3.add(item5);menu4.add(item6);menubar.add(menu1);menubar.add(menu2);menubar.add(menu3);menubar.add(menu4);setJMenuBar(menubar);button1=newJButton("直线");button2=newJButton("空心椭圆");button3=newJButton("实心椭圆");button4=newJButton("空心矩形");button5=newJButton("实心矩形");button6=newJButton("多边形");pane2.add(button1);pane2.add(button2);pane2.add(button4);pane2.add(button6);pane2.add(label1);pane2.add(button3);pane2.add(button5);button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);button6.addActionListener(this);c.add(pane1,BorderLayout.NORTH);c.add(pane2,BorderLayout.SOUTH);c.add(JD,BorderLayout.CENTER);pane2.setLayout(newGridLayout(2,4,20,10));}publicvoidactionPerformed(ActionEvente){intx1,y1,x2,y2;x1=Integer.parseInt(pane1.getA().getText());y1=Integer.parseInt(pane1.getB().getText());x2=Integer.parseInt(pane1.getC().getText());y2=Integer.parseInt(pane1.getD().getText());//获得相应文本内容;intx3[]={280,120,50,90,210,280};intx4[]={20,50,100,110,70,20};intn=5;//当监听器监听到鼠标点击菜单项直线时,绘制直线图形if(e.getSource()==item1){if(JD!=null){JD.setLine(1);JD.setOval(0);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击菜单项空心椭圆时,绘制空心椭圆图形elseif(e.getSource()==item2){if(JD!=null){JD.setLine(0);JD.setOval(1);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击菜单项实心椭圆时,绘制实心椭圆图形elseif(e.getSource()==item3){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(1);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击菜单项空心矩形时,绘制空心矩形图形elseif(e.getSource()==item4){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(0);JD.setRect(1);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击菜单项实心矩形时,绘制实心矩形图形elseif(e.getSource()==item5){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(1);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击菜单项多边形时,绘制多边形图形elseif(e.getSource()==item6){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(1);JD.setPolPosition(x3,x4,n);JD.repaint();}}//当监听器监听到鼠标点击按钮直线时,绘制直线图形if(e.getSource()==button1){if(JD!=null){JD.setLine(1);JD.setOval(0);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击按钮空心椭圆时,绘制空心椭圆图形elseif(e.getSource()==button2){if(JD!=null){JD.setLine(0);JD.setOval(1);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击按钮实心椭圆时,绘制实心椭圆图形elseif(e.getSource()==button3){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(1);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击按钮空心矩形时,绘制空心矩形图形elseif(e.getSource()==button4){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(0);JD.setRect(1);JD.setfillRect(0);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击按钮实心矩形时,绘制实心矩形图形elseif(e.getSource()==button5){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(1);JD.setPolygon(0);JD.setPosition(x1,y1,x2,y2);JD.repaint();}}//当监听器监听到鼠标点击按钮多边形时,绘制多边形图形elseif(e.getSource()==button6){if(JD!=null){JD.setLine(0);JD.setOval(0);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(0);JD.setPolygon(1);JD.setPolPosition(x3,x4,n);JD.repaint();}}}publicstaticvoidmain(String[]args){JFramejf=newDraw();jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setResizable(false);jf.setVisible(true);}}importjava.awt.*;importjavax.swing.*;publicclassMypanelextendsJPanel{privatestaticfinallongserialVersionUID=1L;Labellabel1,label2,label3,label4;TextFielda,b,c,d,x;Mypanel(){label2=newLabel("请输入:");label1=newLabel("参数");x=newTextField(4);a=newTextField(4);b=newTextField(4);c=newTextField(4);d=newTextField(4);//构造具有指定列数的新的空文本字段;add(label2);add(x);add(label1);add(a);add(b);add(c);add(d);}publicTextFieldgetA(){returna;}publicvoidsetA(TextFielda){this.a=a;}publicTextFieldgetB(){returnb;}publicvoidsetB(TextFieldb){this.b=b;}pu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论