




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、功能綜述 復習、鞏固Java語言的基礎(chǔ)知識進一步加深對Java語言的理解和掌握課程設(shè)計為學生提供了一個既動手又動腦、獨立實踐的機會,將課本上的理論知識和實際有機的結(jié)合起來,鍛煉學生的分析解決實際問題的能力。提高學生適應實際,實踐編程的能力,培養(yǎng)學生在項目開發(fā)中團隊合作精神、創(chuàng)新意識及能力。 實現(xiàn)簡單繪圖功能,具體要求:畫直線,畫空心或?qū)嵭臋E圓、畫空心或?qū)嵭木匦?、畫多邊形(圖形的位置和大小可在程序中設(shè)定)。(一) 分析與設(shè)計說明 本學期對于java語言的學習,本程序運用圖形界面和繪圖功能,均已學過利用Eclipse工具,采用java語言解決問題。 用菜單和按鈕控制繪圖程序 設(shè)置圖形參數(shù)菜單繪制圖
2、形按鈕繪制圖形主菜單多邊形實心矩形空心矩形實心橢圓空心橢圓直線多邊形橢圓矩形直線直線實心矩形空心矩形實心橢圓空心橢圓多邊形 運行程序,輸入圖形類型,并輸入兩個坐標參數(shù)(不超過界面的大?。?,再選擇程序界面上方相應所需的菜單選項或下方的按鈕,得到所需圖形,完成功能的實現(xiàn)。(二) 代碼分析 /圖形界面的實現(xiàn)(圖形界面包括2個標簽,4個菜單,6個按鈕,5個文本組件)/導入程序所需要的包import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Draw extends JFrame implements
3、ActionListenerprivate static final long serialVersionUID = 1L;private static final int WIDTH=600; private static final int HEIGHT=600; JMenuBar menubar; JMenu menu1,menu2,menu3,menu4; JMenuItem item1,item2,item3,item4,item5,item6;JButton button1,button2,button3,button4,button5,button6; JLabel label1
4、;Mypanel pane1=new Mypanel(); DrawCanvas JD=null;/將圖形界面設(shè)為名為“控制繪圖”且長寬都為600的圖形界面。 public Draw() super("控制繪圖"); setSize(WIDTH,HEIGHT); Container c=getContentPane(); JD=new DrawCanvas(); JPanel pane2=new JPanel(); Compent(c, pane2); private void Compent(Container c, JPanel pane2) menubar=new J
5、MenuBar(); menu1=new JMenu("直線"); menu2=new JMenu("橢圓"); menu3=new JMenu("矩形"); menu4=new JMenu("多邊形"); item1=new JMenuItem("直線"); item2=new JMenuItem("空心橢圓"); item3=new JMenuItem("實心橢圓"); item4=new JMenuItem("空心矩形"); it
6、em5=new JMenuItem("實心矩形"); item6=new JMenuItem("多邊形"); item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this); item6.addActionListener(this); label1=new JLabel(""); menu1.
7、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=new JButton("直線"); button2=new JBu
8、tton("空心橢圓"); button3=new JButton("實心橢圓"); button4=new JButton("空心矩形"); button5=new JButton("實心矩形"); button6=new JButton("多邊形"); pane2.add(button1); pane2.add(button2); pane2.add(button4); pane2.add(button6); pane2.add(label1); pane2.add(button3); pa
9、ne2.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,BorderLay
10、out.CENTER); pane2.setLayout(new GridLayout(2,5,20,10); /*Draw繼承了JFrame,因此可以顯示,首先聲明標簽、菜單、按鈕和一個JFrame窗口。 然后通過構(gòu)建標簽、菜單、按鈕菜單項添加到菜單中。標簽、菜單、按鈕添加到窗口容器中,設(shè)置容器的大小及添加按鈕和菜單事件監(jiān)聽者。 */*處理事件監(jiān)聽器事件*/ public void actionPerformed(ActionEvent e) int x1,y1,x2,y2; x1=Integer.parseInt(pane1.getA().getText(); y1=Integer.par
11、seInt(pane1.getB().getText(); x2=Integer.parseInt(pane1.getC().getText(); y2=Integer.parseInt(pane1.getD().getText(); int x3=280,120,50,90,210,280; int x4=20,50,100,110,70,20; int n=5; /當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項實心橢圓時,繪制實心橢圓圖形 else if(e.getSource()=item3) if(JD!=null) JD.setLine(0); JD.setOval(0); JD.setfillOva
12、l(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!=nu
13、ll) 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):/在主函
14、數(shù)中創(chuàng)建了一個jf窗口用于產(chǎn)生圖形界面。設(shè)置其可見和大小不可改變屬性 public static void main(String args) JFrame jf=new Draw(); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setResizable(false); jf.setVisible(true); /圖形繪制的實現(xiàn)/導入該程序所需要的包import java.awt.*; import javax.swing.*; /DrawCanvas實現(xiàn)圖形的繪制(直線空心橢圓實心橢圓空心矩形實心矩形多邊形)。public c
15、lass DrawCanvas extends JPanel private static final long serialVersionUID = 1L; int x1,y1,x2,y2; int line,oval,filloval,rect,fillrect,polygon; int x3,x4,n; public void setPosition(int x1,int y1,int x2,int y2) this.x1=x1; this.y1=y1; this.x2=x2; this.y2=y2; public void setPolPosition(int x3,int x4,in
16、t n) this.x3=x3; this.x4=x4; this.n=n; public void setLine(int line) this.line=line; public void setOval(int oval) this.oval=oval; public void setfillOval(int filloval) this.filloval=filloval; public void setRect(int rect) this.rect=rect; public void setfillRect(int fillrect) this.fillrect=fillrect;
17、 public void setPolygon(int polygon) this.polygon=polygon; public void paintComponent(Graphics g) g.setColor(getBackground(); g.fillRect(0,0,this.getWidth(),this.getHeight(); g.setColor(Color.black); if(line=1) g.drawLine(x1,y1,x2,y2); else if(oval=1) g.drawOval(x1, y1, x2, y2); else if(filloval=1)
18、g.fillOval(x1,y1,x2,y2); else if(rect=1) g.drawRect(x1, y1, x2, y2); else if(fillrect=1) g.fillRect(x1,y1,x2,y2); else if(polygon=1) g.drawPolygon(x3,x4,n); /設(shè)置參數(shù)的實現(xiàn)/導入程序所需的包import java.awt.*; import javax.swing.*; /Mypanel類中聲明了標簽并使得通過創(chuàng)建該類的實例將其添加到圖形界面中public class Mypanel extends JPanel private stat
19、ic final long serialVersionUID = 1L;Label label1,label2,label3,label4; TextField a,b,c,d,x; Mypanel() label2=new Label("請輸入:"); label1=new Label("參數(shù)"); /*參數(shù)最大可設(shè)置4位不過上面的圖像界面中設(shè)置的大小為600600。故此設(shè)置的大小不應該超過600600600600。*/ x=new TextField(4); a=new TextField(4); b=new TextField(4); c=new
20、TextField(4); d=new TextField(4); add(label2); add(x); add(label1); add(a); add(b); add(c); add(d); public TextField getA() return a; public void setA(TextField a) this.a = a; public TextField getB() return b; public void setB(TextField b) this.b = b; public TextField getC() return c; public void se
21、tC(TextField c) this.c = c; public TextField getD() return d; public void setD(TextField d) this.d = d; /*應該注意的是,多邊形的參數(shù)是數(shù)組型給出,故為了簡便,程序中已經(jīng)設(shè)置好多變形的參數(shù),不論輸入的參數(shù)是什么,顯示的還是代碼中已經(jīng)設(shè)置好的參數(shù)的那個多邊形。參數(shù)一二位為圖形起點位置坐標,三四位位圖形終點坐標分別為圖形的左上角和右下角。*/(三) 運行結(jié)果例一:輸入“直線”和參數(shù),選擇直線菜單項,繪制圖線為直線。例二:輸入“空心橢圓”和參數(shù),選擇下方空心橢圓按鈕,繪制圖形為空心橢圓。例三:輸入
22、“實心矩形”和參數(shù),選擇下方實心矩形按鈕,繪制圖形為實心矩形。例四:輸入“多邊形”和參數(shù),選擇多邊形菜單項,繪制圖形為多邊形。 結(jié)果分析: 1、當輸入“直線”,并輸入起始兩點坐標參數(shù),點擊直線菜單項或直線按鈕時, 繪制圖形為直線。 2、當輸入“空心橢圓”,并輸入兩點坐標參數(shù),點擊空心橢圓菜單項或空心橢圓按鈕時,繪制圖形為空心橢圓。 3、當輸入“實心橢圓”,并輸入兩點坐標參數(shù),點擊實心橢圓菜單項或?qū)嵭臋E圓時按鈕,繪制圖形為實心橢圓。 4、當輸入“空心矩形”,并輸入對角線兩點坐標參數(shù),點擊空心矩形菜單項或空心矩形按鈕時,繪制圖形為空心矩形。 5、當輸入“實心矩形”,并輸入對角線兩點坐標參數(shù),點擊實
23、心矩形菜單項或?qū)嵭木匦伟粹o時,繪制圖形為實心矩形。 6、當輸入“多邊形”,并輸入兩點坐標參數(shù),點擊多邊形菜單項或多邊形按鈕 時,繪制圖形為多邊形。(四) 附錄 附錄一:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Draw extends JFrame implements ActionListenerprivate static final long serialVersionUID = 1L;private static final int WIDTH=600; private
24、static final int HEIGHT=600; /界面大小JMenuBar menubar; /菜單條JMenu menu1,menu2,menu3,menu4; /菜單JMenuItem item1,item2,item3,item4,item5,item6; /菜單項 JButton button1,button2,button3,button4,button5,button6; JLabel label1;Mypanel pane1=new Mypanel(); DrawCanvas JD=null;/將圖形界面設(shè)為名為“控制繪圖”且長寬都為600的圖形界面。 public D
25、raw() super("控制繪圖"); /創(chuàng)建標題; setSize(WIDTH,HEIGHT); Container c=getContentPane(); /初始化容器; JD=new DrawCanvas(); JPanel pane2=new JPanel(); Compent(c, pane2); private void Compent(Container c, JPanel pane2) menubar=new JMenuBar(); menu1=new JMenu("直線"); menu2=new JMenu("橢圓"
26、;); menu3=new JMenu("矩形"); menu4=new JMenu("多邊形"); /構(gòu)造一個新 JMenu,用提供的字符串作為其文本; item1=new JMenuItem("直線"); item2=new JMenuItem("空心橢圓"); item3=new JMenuItem("實心橢圓"); item4=new JMenuItem("空心矩形"); item5=new JMenuItem("實心矩形"); item6=new
27、 JMenuItem("多邊形"); item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this); item6.addActionListener(this); label1=new JLabel(""); menu1.add(item1); menu2.add(item2); menu2.addSeparat
28、or(); 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=new JButton("直線"); button2=new JButton("空心橢圓")
29、; button3=new JButton("實心橢圓"); button4=new JButton("空心矩形"); button5=new JButton("實心矩形"); button6=new JButton("多邊形"); pane2.add(button1); pane2.add(button2); pane2.add(button4); pane2.add(button6); pane2.add(label1); pane2.add(button3); pane2.add(button5); butt
30、on1.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.set
31、Layout(new GridLayout(2,4,20,10); public void actionPerformed(ActionEvent e) int x1,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)容; int x3=280,120,50,9
32、0,210,280; int x4=20,50,100,110,70,20; int n=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)聽到鼠標點擊菜單項空心橢圓時,繪制空心橢圓圖形 else if(e.getSo
33、urce()=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)聽到鼠標點擊菜單項實心橢圓時,繪制實心橢圓圖形 else if(e.getSource()=item3) if(JD!=null) JD.setLine(0); JD.setOval(0); JD.setfillOval(1); JD.setRe
34、ct(0); JD.setfillRect(0); JD.setPolygon(0); JD.setPosition(x1,y1,x2,y2); JD.repaint(); /當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項空心矩形時,繪制空心矩形圖形 else if(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(
35、); /當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項實心矩形時,繪制實心矩形圖形 else if(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)聽到鼠標點擊菜單項多邊形時,繪制多邊形圖形 else if(e.getSource()=item6) if(JD!=null) JD.setLine(
36、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); J
37、D.setPosition(x1,y1,x2,y2); JD.repaint(); /當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕空心橢圓時,繪制空心橢圓圖形 else if(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)聽到鼠標點擊按鈕實心橢圓時,繪制實心橢圓圖形 else if(e.ge
38、tSource()=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)聽到鼠標點擊按鈕空心矩形時,繪制空心矩形圖形 else if(e.getSource()=button4) if(JD!=null) JD.setLine(0); JD.setOval(0); JD.setfillOval(0); JD
39、.setRect(1); JD.setfillRect(0); JD.setPolygon(0); JD.setPosition(x1,y1,x2,y2); JD.repaint(); /當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕實心矩形時,繪制實心矩形圖形 else if(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.r
40、epaint(); /當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕多邊形時,繪制多邊形圖形 else if(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(); public static void main(String args) JFrame jf=new Draw(); jf.setDefaultClos
41、eOperation(JFrame.EXIT_ON_CLOSE); jf.setResizable(false); jf.setVisible(true); import java.awt.*; import javax.swing.*; public class Mypanel extends JPanel private static final long serialVersionUID = 1L;Label label1,label2,label3,label4; TextField a,b,c,d,x; Mypanel() label2=new Label("請輸入:&qu
42、ot;); label1=new Label("參數(shù)"); x=new TextField(4); a=new TextField(4); b=new TextField(4); c=new TextField(4); d=new TextField(4); /構(gòu)造具有指定列數(shù)的新的空文本字段; add(label2); add(x); add(label1); add(a); add(b); add(c); add(d); public TextField getA() return a; public void setA(TextField a) this.a = a; public Text
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)園區(qū)環(huán)境風險防控體系建設(shè)
- 工業(yè)大數(shù)據(jù)在智能制造中的價值
- 工業(yè)安全與智能防控技術(shù)
- 工業(yè)安全防護技術(shù)與措施
- 工業(yè)用特種機械設(shè)備的技術(shù)與應用分析
- 工業(yè)自動化中機器視覺的檢測精度提升
- 工業(yè)機器人技術(shù)的安全與防護措施
- 工業(yè)綠色化改造與可持續(xù)發(fā)展路徑
- 工業(yè)節(jié)能與綠色生產(chǎn)的研究進展
- 工業(yè)自動化中的電氣傳動與控制
- DBJT 13-200-2025 福建省樁基礎(chǔ)與地下結(jié)構(gòu)防腐蝕技術(shù)標準
- 【初中地理】七年級地理下冊全冊期末總復習(課件)-2024-2025學年七年級地理課件(人教版2024年)
- 2025年全國青少年禁毒知識競賽題庫附答案(共150題)
- 2025年文秘類的考試試題及答案
- 第五單元 第5節(jié) 跨學科實踐:制作望遠鏡 教學設(shè)計-2024-2025學年人教版物理八年級上冊
- 電力輸電線路施工安全培訓
- 應用型本科高校建設(shè)現(xiàn)狀的調(diào)研報告
- 單位保潔協(xié)議合同范本
- 高新技術(shù)產(chǎn)品貿(mào)易銷售合同
- 空調(diào)維保服務(wù)項目質(zhì)量保障措施
- 2025年重點高中自主招生考試數(shù)學試卷試題(含答案詳解)
評論
0/150
提交評論