java課設-用菜單按鈕控制繪圖_第1頁
java課設-用菜單按鈕控制繪圖_第2頁
java課設-用菜單按鈕控制繪圖_第3頁
java課設-用菜單按鈕控制繪圖_第4頁
java課設-用菜單按鈕控制繪圖_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

..功能綜述復習、鞏固Java語言的基礎知識進一步加深對Java語言的理解和掌握課程設計為學生提供了一個既動手又動腦、獨立實踐的機會,將課本上的理論知識和實際有機的結(jié)合起來,鍛煉學生的分析解決實際問題的能力。提高學生適應實際,實踐編程的能力,培養(yǎng)學生在項目開發(fā)中團隊合作精神、創(chuàng)新意識及能力。實現(xiàn)簡單繪圖功能,具體要求:畫直線,畫空心或?qū)嵭臋E圓、畫空心或?qū)嵭木匦巍嫸噙呅巍矆D形的位置和大小可在程序中設定。分析與設計說明本學期對于java語言的學習,本程序運用圖形界面和繪圖功能,均已學過利用Eclipse工具,采用java語言解決問題。用菜單和按鈕控制繪圖程序用菜單和按鈕控制繪圖程序設置圖形參數(shù)菜單繪制圖形按鈕繪制圖形設置圖形參數(shù)菜單繪制圖形按鈕繪制圖形主菜單主菜單多邊形實心矩形空心矩形實心橢圓空心橢圓直線多邊形實心矩形空心矩形實心橢圓空心橢圓直線多邊形橢圓矩形直線多邊形橢圓矩形直線直線直線實心矩形空心矩形實心橢圓空心橢圓多邊形實心矩形空心矩形實心橢圓空心橢圓多邊形運行程序,輸入圖形類型,并輸入兩個坐標參數(shù)<不超過界面的大小,再選擇程序界面上方相應所需的菜單選項或下方的按鈕,得到所需圖形,完成功能的實現(xiàn)。代碼分析/圖形界面的實現(xiàn)〔圖形界面包括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; uttonbutton1,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=newutton<"直線">; button2=newutton<"空心橢圓">; button3=newutton<"實心橢圓">; button4=newutton<"空心矩形">; button5=newutton<"實心矩形">; button6=newutton<"多邊形">; 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窗口。然后通過構(gòu)建標簽、菜單、按鈕菜單項添加到菜單中。標簽、菜單、按鈕添加到窗口容器中,設置容器的大小及添加按鈕和菜單事件監(jiān)聽者。*//*處理事件監(jiān)聽器事件*/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;//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項實心橢圓時,繪制實心橢圓圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項直線時,繪制直線圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項空心橢圓時,繪制空心橢圓圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項空心矩形時,繪制空心矩形圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項實心矩形時,繪制實心矩形圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項多邊形時,繪制多邊形圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕直線時,繪制直線圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕空心橢圓時,繪制空心橢圓圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕實心橢圓時,繪制實心橢圓圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕空心矩形時,繪制空心矩形圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕實心矩形時,繪制實心矩形圖形//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕多邊形時,繪制多邊形圖形//3.主函數(shù)的實現(xiàn)://在主函數(shù)中創(chuàng)建了一個jf窗口用于產(chǎn)生圖形界面。設置其可見和大小不可改變屬性publicstaticvoidmain<String[]args>{ JFramejf=newDraw<>; jf.setDefaultCloseOperation<JFrame.EXIT_ON_CLOSE>;jf.setResizable<false>;jf.setVisible<true>;}}//圖形繪制的實現(xiàn)//導入該程序所需要的包importjava.awt.*;importjavax.swing.*;//DrawCanvas實現(xiàn)圖形的繪制<直線空心橢圓實心橢圓空心矩形實心矩形多邊形>。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>; }}}//設置參數(shù)的實現(xiàn)//導入程序所需的包importjava.awt.*;importjavax.swing.*;//Mypanel類中聲明了標簽并使得通過創(chuàng)建該類的實例將其添加到圖形界面中publicclassMypanelextendsJPanel{ privatestaticfinallongserialVersionUID=1L; Labellabel1,label2,label3,label4;TextFielda,b,c,d,x;Mypanel<>{ label2=newLabel<"請輸入:">; label1=newLabel<"參數(shù)">;/*參數(shù)最大可設置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;}}/*應該注意的是,多邊形的參數(shù)是數(shù)組型給出,故為了簡便,程序中已經(jīng)設置好多變形的參數(shù),不論輸入的參數(shù)是什么,顯示的還是代碼中已經(jīng)設置好的參數(shù)的那個多邊形。參數(shù)一二位為圖形起點位置坐標,三四位位圖形終點坐標分別為圖形的左上角和右下角。*/運行結(jié)果例一:輸入"直線"和參數(shù),選擇直線菜單項,繪制圖線為直線。例二:輸入"空心橢圓"和參數(shù),選擇下方空心橢圓按鈕,繪制圖形為空心橢圓。例三:輸入"實心矩形"和參數(shù),選擇下方實心矩形按鈕,繪制圖形為實心矩形。例四:輸入"多邊形"和參數(shù),選擇多邊形菜單項,繪制圖形為多邊形。結(jié)果分析:1、當輸入"直線",并輸入起始兩點坐標參數(shù),點擊直線菜單項或直線按鈕時,繪制圖形為直線。2、當輸入"空心橢圓",并輸入兩點坐標參數(shù),點擊空心橢圓菜單項或空心橢圓按鈕時,繪制圖形為空心橢圓。3、當輸入"實心橢圓",并輸入兩點坐標參數(shù),點擊實心橢圓菜單項或?qū)嵭臋E圓時按鈕,繪制圖形為實心橢圓。4、當輸入"空心矩形",并輸入對角線兩點坐標參數(shù),點擊空心矩形菜單項或空心矩形按鈕時,繪制圖形為空心矩形。5、當輸入"實心矩形",并輸入對角線兩點坐標參數(shù),點擊實心矩形菜單項或?qū)嵭木匦伟粹o時,繪制圖形為實心矩形。6、當輸入"多邊形",并輸入兩點坐標參數(shù),點擊多邊形菜單項或多邊形按鈕時,繪制圖形為多邊形。附錄附錄一: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;//菜單項 uttonbutton1,button2,button3,button4,button5,button6; JLabellabel1; Mypanelpane1=newMypanel<>; DrawCanvasJD=null;//將圖形界面設為名為"控制繪圖"且長寬都為600的圖形界面。publicDraw<>{ super<"控制繪圖">;//創(chuàng)建標題; 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<"多邊形">;//構(gòu)造一個新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=newutton<"直線">; button2=newutton<"空心橢圓">; button3=newutton<"實心橢圓">; button4=newutton<"空心矩形">; button5=newutton<"實心矩形">; button6=newutton<"多邊形">; 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<>>;//獲得相應文本內(nèi)容; intx3[]={280,120,50,90,210,280}; intx4[]={20,50,100,110,70,20}; intn=5;//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項直線時,繪制直線圖形 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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項空心橢圓時,繪制空心橢圓圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項實心橢圓時,繪制實心橢圓圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項空心矩形時,繪制空心矩形圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項實心矩形時,繪制實心矩形圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項多邊形時,繪制多邊形圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕直線時,繪制直線圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕空心橢圓時,繪制空心橢圓圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕實心橢圓時,繪制實心橢圓圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕空心矩形時,繪制空心矩形圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕實心矩形時,繪制實心矩形圖形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<>;}}//當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕多邊形時,繪制多邊形圖形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<"參數(shù)">; x=newTextField<4>;a=newTextField<4>;b=newTextField<4>;c=newTextField<4>;d=newTextField<4>;//構(gòu)造具有指定列數(shù)的新的空文本字段;add<label2>;add<x>;add<label1>;add<a>;add<b>;add<c>;add<d>;}publicTextFieldgetA<>{ returna;}publicvoidsetA<TextFielda>{ this.a=a;}publicTextFieldgetB<>{ returnb;} publicvoidsetB<TextField

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論