版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、功能綜述 復習、鞏固Java語言的基礎知識進一步加深對Java語言的理解和掌握課程設計為學生提供了一個既動手又動腦、獨立實踐的機會,將課本上的理論知識和實際有機的結合起來,鍛煉學生的分析解決實際問題的能力。提高學生適應實際,實踐編程的能力,培養(yǎng)學生在項目開發(fā)中團隊合作精神、創(chuàng)新意識及能力。 實現(xiàn)簡單繪圖功能,具體要求:畫直線,畫空心或實心橢圓、畫空心或實心矩形、畫多邊形(圖形的位置和大小可在程序中設定)。(一) 分析與設計說明 本學期對于java語言的學習,本程序運用圖形界面和繪圖功能,均已學過利用Eclipse工具,采用java語言解決問題。 用菜單和按鈕控制繪圖程序 設置圖形參數(shù)菜單繪制圖
2、形按鈕繪制圖形主菜單多邊形實心矩形空心矩形實心橢圓空心橢圓直線多邊形橢圓矩形直線直線實心矩形空心矩形實心橢圓空心橢圓多邊形 運行程序,輸入圖形類型,并輸入兩個坐標參數(shù)(不超過界面的大?。龠x擇程序界面上方相應所需的菜單選項或下方的按鈕,得到所需圖形,完成功能的實現(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;/將圖形界面設為名為“控制繪圖”且長寬都為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 JMenuBar(); m
5、enu1=new JMenu(直線); menu2=new JMenu(橢圓); menu3=new JMenu(矩形); menu4=new JMenu(多邊形); item1=new JMenuItem(直線); item2=new JMenuItem(空心橢圓); item3=new JMenuItem(實心橢圓); item4=new JMenuItem(空心矩形); item5=new JMenuItem(實心矩形); item6=new JMenuItem(多邊形); item1.addActionListener(this); item2.addActionListener(th
6、is); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this); item6.addActionListener(this); label1=new JLabel(); menu1.add(item1); menu2.add(item2); menu2.addSeparator(); menu2.add(item3); menu3.add(item4); menu3.addSeparator(); menu3.add(item5); menu4.add(item6)
7、; menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); menubar.add(menu4); setJMenuBar(menubar); button1=new JButton(直線); button2=new JButton(空心橢圓); button3=new JButton(實心橢圓); button4=new JButton(空心矩形); button5=new JButton(實心矩形); button6=new JButton(多邊形); pane2.add(button1); pane2.add(button2
8、); 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);
9、c.add(pane1,BorderLayout.NORTH); c.add(pane2,BorderLayout.SOUTH); c.add(JD,BorderLayout.CENTER); pane2.setLayout(new GridLayout(2,5,20,10); /*Draw繼承了JFrame,因此可以顯示,首先聲明標簽、菜單、按鈕和一個JFrame窗口。 然后通過構建標簽、菜單、按鈕菜單項添加到菜單中。標簽、菜單、按鈕添加到窗口容器中,設置容器的大小及添加按鈕和菜單事件監(jiān)聽者。 */*處理事件監(jiān)聽器事件*/ public void actionPerformed(Action
10、Event 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(); int x3=280,120,50,90,210,280; int x4=20,50,100,110,70,20; int n=5; /當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項實心橢圓時,繪制實心橢圓圖形 e
11、lse if(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)
12、聽器監(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)聽到鼠標點擊
13、按鈕空心矩形時,繪制空心矩形圖形/當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕實心矩形時,繪制實心矩形圖形/當監(jiān)聽器監(jiān)聽到鼠標點擊按鈕多邊形時,繪制多邊形圖形/3.主函數(shù)的實現(xiàn):/在主函數(shù)中創(chuàng)建了一個jf窗口用于產生圖形界面。設置其可見和大小不可改變屬性 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
14、java.awt.*; import javax.swing.*; /DrawCanvas實現(xiàn)圖形的繪制(直線空心橢圓實心橢圓空心矩形實心矩形多邊形)。public class 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
15、=x1; this.y1=y1; this.x2=x2; this.y2=y2; public void setPolPosition(int x3,int x4,int 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
16、 rect) this.rect=rect; public void setfillRect(int fillrect) this.fillrect=fillrect; 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.dra
17、wLine(x1,y1,x2,y2); else if(oval=1) g.drawOval(x1, y1, x2, y2); else if(filloval=1) 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ù)的實現(xiàn)/導入程序所需的包import java.awt.*; import javax.swing.*; /
18、Mypanel類中聲明了標簽并使得通過創(chuàng)建該類的實例將其添加到圖形界面中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(請輸入:); label1=new Label(參數(shù)); /*參數(shù)最大可設置4位不過上面的圖像界面中設置的大小為600600。故此設置的大小不應該超過600600600600。*/ x=new
19、TextField(4); a=new TextField(4); b=new TextField(4); c=new 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)
20、this.b = b; public TextField getC() return c; public void setC(TextField c) this.c = c; public TextField getD() return d; public void setD(TextField d) this.d = d; /*應該注意的是,多邊形的參數(shù)是數(shù)組型給出,故為了簡便,程序中已經設置好多變形的參數(shù),不論輸入的參數(shù)是什么,顯示的還是代碼中已經設置好的參數(shù)的那個多邊形。參數(shù)一二位為圖形起點位置坐標,三四位位圖形終點坐標分別為圖形的左上角和右下角。*/(三) 運行結果例一:輸入“直線”和
21、參數(shù),選擇直線菜單項,繪制圖線為直線。例二:輸入“空心橢圓”和參數(shù),選擇下方空心橢圓按鈕,繪制圖形為空心橢圓。例三:輸入“實心矩形”和參數(shù),選擇下方實心矩形按鈕,繪制圖形為實心矩形。例四:輸入“多邊形”和參數(shù),選擇多邊形菜單項,繪制圖形為多邊形。 結果分析: 1、當輸入“直線”,并輸入起始兩點坐標參數(shù),點擊直線菜單項或直線按鈕時, 繪制圖形為直線。 2、當輸入“空心橢圓”,并輸入兩點坐標參數(shù),點擊空心橢圓菜單項或空心橢圓按鈕時,繪制圖形為空心橢圓。 3、當輸入“實心橢圓”,并輸入兩點坐標參數(shù),點擊實心橢圓菜單項或實心橢圓時按鈕,繪制圖形為實心橢圓。 4、當輸入“空心矩形”,并輸入對角線兩點坐標
22、參數(shù),點擊空心矩形菜單項或空心矩形按鈕時,繪制圖形為空心矩形。 5、當輸入“實心矩形”,并輸入對角線兩點坐標參數(shù),點擊實心矩形菜單項或實心矩形按鈕時,繪制圖形為實心矩形。 6、當輸入“多邊形”,并輸入兩點坐標參數(shù),點擊多邊形菜單項或多邊形按鈕 時,繪制圖形為多邊形。(四) 附錄 附錄一:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Draw extends JFrame implements ActionListenerprivate static final long serial
23、VersionUID = 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;Mypanel pane1=new Mypanel()
24、; DrawCanvas JD=null;/將圖形界面設為名為“控制繪圖”且長寬都為600的圖形界面。 public Draw() 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 JMen
25、u(直線); menu2=new JMenu(橢圓); menu3=new JMenu(矩形); menu4=new JMenu(多邊形); /構造一個新 JMenu,用提供的字符串作為其文本; item1=new JMenuItem(直線); item2=new JMenuItem(空心橢圓); item3=new JMenuItem(實心橢圓); item4=new JMenuItem(空心矩形); item5=new JMenuItem(實心矩形); item6=new JMenuItem(多邊形); item1.addActionListener(this); item2.addAct
26、ionListener(this); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this); item6.addActionListener(this); label1=new JLabel(); menu1.add(item1); menu2.add(item2); menu2.addSeparator(); menu2.add(item3); menu3.add(item4); menu3.addSeparator(); /往菜單、對象條中到場一條橫線,完成分組
27、功效; 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(空心橢圓); button3=new JButton(實心橢圓); button4=new JButton(空心矩形); button5=new JButton(實心矩形); button6=new JButton(多邊形);
28、 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(th
29、is); button6.addActionListener(this); c.add(pane1,BorderLayout.NORTH); c.add(pane2,BorderLayout.SOUTH); c.add(JD,BorderLayout.CENTER); pane2.setLayout(new GridLayout(2,4,20,10); public void actionPerformed(ActionEvent e) int x1,y1,x2,y2; x1=Integer.parseInt(pane1.getA().getText(); y1=Integer.parseIn
30、t(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)聽到鼠標點擊菜單項直線時,繪制直線圖形 if(e.getSource()=item1) if(JD!=null) JD.setLine(1); JD.setOval(0); JD.setfillOval(
31、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()=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);
32、 JD.repaint(); /當監(jiān)聽器監(jiān)聽到鼠標點擊菜單項實心橢圓時,繪制實心橢圓圖形 else if(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)聽到鼠標點擊菜單項空心矩形時,繪制空心矩形圖形 else if(e.getSource()=item4) if(JD!=nul
33、l) 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)聽到鼠標點擊菜單項實心矩形時,繪制實心矩形圖形 else if(e.getSource()=item5) if(JD!=null) JD.setLine(0); JD.setOval(0); JD.setfillOval(0); JD.setRect(0); JD.setfillRect(1)
34、; 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(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)聽到鼠標點擊按鈕直線時,繪制直線
35、圖形 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)聽到鼠標點擊按鈕空心橢圓時,繪制空心橢圓圖形 else if(e.getSource()=button2) if(JD!=null) JD.setLine(0); JD.setOval(1); JD.setfillO
36、val(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()=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
37、,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.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(
38、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()=button6) if(JD!=null) JD.setLine(0); JD.setOval(0); JD.setfillOval(0); JD.setRect(0); JD.setfillR
39、ect(0); JD.setPolygon(1); JD.setPolPosition(x3,x4,n); JD.repaint(); public static void main(String args) JFrame jf=new Draw(); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setResizable(false); jf.setVisible(true); import java.awt.*; import javax.swing.*; public class Mypanel extends JPanel
40、private static final long serialVersionUID = 1L;Label label1,label2,label3,label4; TextField a,b,c,d,x; Mypanel() label2=new Label(請輸入:); label1=new Label(參數(shù)); x=new TextField(4); a=new TextField(4); b=new TextField(4); c=new TextField(4); d=new TextField(4); /構造具有指定列數(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 TextField getB() return b; public void setB(TextField b) this.b = b; public TextField getC(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技節(jié)慶活動的多元策劃與實施經驗
- 2025年北師大版九年級生物上冊階段測試試卷
- 2025年人教版(2024)九年級地理下冊月考試卷含答案
- 2025年教科新版高一地理上冊階段測試試卷含答案
- 2025年粵人版九年級地理下冊階段測試試卷含答案
- 2025年中圖版八年級歷史上冊月考試卷
- 2025年蘇人新版九年級歷史下冊月考試卷
- 2025年人教版(2024)九年級歷史下冊階段測試試卷
- 2025年粵教新版選擇性必修3歷史下冊階段測試試卷含答案
- 2025年人教A新版九年級歷史上冊階段測試試卷含答案
- 2025年上半年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人易考易錯模擬試題(共500題)試卷后附參考答案
- DB3301T 0382-2022 公共資源交易開評標數(shù)字見證服務規(guī)范
- 人教版2024-2025學年八年級上學期數(shù)學期末壓軸題練習
- 江蘇省無錫市2023-2024學年八年級上學期期末數(shù)學試題(原卷版)
- 俄語版:中國文化概論之中國的傳統(tǒng)節(jié)日
- 2022年湖南省公務員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 婦科一病一品護理匯報
- 哪吒之魔童降世
- 2022年上海市各區(qū)中考一模語文試卷及答案
- 2024年全國統(tǒng)一高考數(shù)學試卷(新高考Ⅱ)含答案
- 我國無菌包裝行業(yè)消費量已超千億包-下游需求仍存擴容潛力
評論
0/150
提交評論