您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > java课设用菜单按钮控制绘图
功能综述复习、巩固JavaJava语言的理解和掌握课程设计为学生提供了一个既动手又动脑、独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力,培养学生在项目开发中团队合作精神、创新意识及能力。实现简单绘图功能,具体要求:画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。(一)分析与设计说明本学期对于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.主函数的实现://在主函数中创建了一个jfpublicstaticvoidmain(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(请输入:
本文标题:java课设用菜单按钮控制绘图
链接地址:https://www.777doc.com/doc-2881583 .html