




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)四 用戶圖形界面GUI實(shí)驗(yàn)課程名:Java程序設(shè)計(jì)專業(yè)班級: 12網(wǎng)工2班 學(xué)號: 201240420224 姓名: 李后浪 實(shí)驗(yàn)時(shí)間: 2014.5.19-5.30 實(shí)驗(yàn)地點(diǎn): K4-307 指導(dǎo)教師: 馮 珊 一、實(shí)驗(yàn)?zāi)康暮鸵髮W(xué)習(xí)處理ActionEvent事件;學(xué)習(xí)處理ItemEvent事件和paint方法;學(xué)習(xí)使用布局類。二、實(shí)驗(yàn)內(nèi)容 任務(wù)1 算術(shù)測試。² 實(shí)驗(yàn)要求:編寫一個算術(shù)測試小軟件,用來訓(xùn)練小學(xué)生的算術(shù)能力。程序由3個類組成,其中Teacher類對象負(fù)責(zé)給出算術(shù)題目,并判斷回答者的答案是否正確;ComputerFrame類對象負(fù)責(zé)為算術(shù)題目提供視圖,比如
2、用戶可以通過ComputerFrame類對象提供的GUI界面看到題目,并通過該GUI界面給出題目的答案;MainClass是軟件的主類。1、源代碼:Teacher.javapublic class Teacher int numberOne,numberTwo; String operator="" boolean right; public int giveNumberOne(int n) numberOne=(int)(Math.random()*n)+1; return numberOne; public int giveNumberTwo(int n) number
3、Two=(int)(Math.random()*n)+1; return numberTwo; public String giveOperator() double d=Math.random(); if(d>=0.5) operator="+" else operator="-" return operator; public boolean getRight(int answer) if(operator.equals("+") if(answer=numberOne+numberTwo) right=true; else
4、 right=false; else if(operator.equals("-") if(answer=numberOne-numberTwo) right=true; else right=false; return right; ComputerFrame.javaimport java.awt.*;import java.awt.event.*;public class ComputerFrame extends Frame implements ActionListener TextField textOne,textTwo,textResult; Button
5、getProblem,giveAnwser; Label operatorLabel,message; Teacher teacher; ComputerFrame(String s) super(s); teacher=new Teacher(); setLayout(new FlowLayout(); textOne=new TextField(10); /創(chuàng)建textOne,其可見字符長是10 textTwo=new TextField(10); /創(chuàng)建textTwo,其可見字符長是10 textResult=new TextField(10); /創(chuàng)建textResult,其可見字符長
6、是10 operatorLabel=new Label("+"); message=new Label("你還沒有回答呢"); getProblem=new Button("獲取題目"); giveAnwser=new Button("確認(rèn)答案"); add(getProblem); add(textOne); add(operatorLabel); add(textTwo); add(new Label("="); add(textResult); add(giveAnwser); add(m
7、essage); textResult.requestFocus(); textOne.setEditable(false); textTwo.setEditable(false); getProblem.addActionListener(this);/將當(dāng)前窗口注冊為getProblem的ActionEvent事件監(jiān)視器 giveAnwser.addActionListener(this);/將當(dāng)前窗口注冊為giveAnwser的ActionEvent事件監(jiān)視器 textResult.addActionListener(this);/將當(dāng)前窗口注冊為textResult的ActionEve
8、nt事件監(jiān)視器 setBounds(100,100,450,100); setVisible(true); validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e) if(e.getSource() = getProblem) /判斷事件源是否是getProblem int number1=teacher.giveNumberOne(100); in
9、t number2=teacher.giveNumberTwo(100); String operator=teacher.giveOperator(); textOne.setText(""+number1); textTwo.setText(""+number2); operatorLabel.setText(operator); message.setText("請回答");textResult.setText(null); if(e.getSource() = giveAnwser) /判斷事件源是否是giveAnwser S
10、tring answer=textResult.getText(); try int result=Integer.parseInt(answer); if(teacher.getRight(result)=true) message.setText("你回答正確"); else message.setText("你回答錯誤"); catch(NumberFormatException ex) message.setText("請輸入數(shù)字字符"); textResult.requestFocus(); validate(); Main
11、Class.java public class MainClass public static void main(String args) ComputerFrame frame; frame=new ComputerFrame("算術(shù)測試"); /創(chuàng)建窗口,其標(biāo)題為:算術(shù)測試 2、運(yùn)行結(jié)果:3、實(shí)驗(yàn)結(jié)果與分析:(明確地寫出最后結(jié)果,并對自己得出的結(jié)果進(jìn)行具體、定量的結(jié)果分析,說明其可靠性;杜絕只羅列不分析)該程序由3個類組成,其中Teacher類對象負(fù)責(zé)給出算術(shù)題目,并判斷回答者的答案是否正確;ComputerFrame類對象負(fù)責(zé)為算術(shù)題目提供視圖,比如用戶可以通過Co
12、mputerFrame類對象提供的GUI界面看到題目,并通過該GUI界面給出題目的答案;MainClass是軟件的主類。任務(wù)2 信號燈。 ² 實(shí)驗(yàn)要求:編寫一個帶有窗口的應(yīng)用程序。在窗口的北面添加一個下拉列表,該下拉列表有“”、“”和“”三個選項(xiàng)。在窗口的中心添加一個畫布,當(dāng)用戶在下拉列表選擇某項(xiàng)后,畫布上繪制相應(yīng)的信號燈。1、源代碼:SignalCanvas.javaimport java.awt.*;public class SignalCanvas extends Canvas int red,green,yellow,x,y,r; SignalCanvas() setBack
13、ground(Color.white); public void setRed(int r) red=r; public void setGreen(int g) green=g; public void setYellow(int y) yellow=y; public void setPosition(int x,int y) this.x=x; this.y=y; public void setRadius(int r) this.r=r; public void paint(Graphics g) if(red=1) g.setColor(Color.red); else if(gre
14、en=1) g.setColor(Color.green); else if(yellow=1) g.setColor(Color.yellow); g.fillOval(x,y,2*r,2*r); SignalFrame.javaimport java.awt.*;import java.applet.*;import java.awt.event.*;public class SignalFrame extends Frame implements ItemListener Choice choice; SignalCanvas signal=null; String itemRed=&q
15、uot;紅燈",itemYellow="黃燈",itemGreen="綠燈" public SignalFrame() choice=new Choice(); /創(chuàng)建choice choice.add(itemRed); /創(chuàng)建choice添加itemRed choice.add(itemYellow); /創(chuàng)建choice添加itemYellow choice.add(itemGreen); /創(chuàng)建choice添加itemGreen choice.addItemListener(this); /將當(dāng)前窗口注冊為choice的ItemEven
16、t事件監(jiān)視器 add(choice,BorderLayout.NORTH); try Class cs=Class.forName("SignalCanvas"); signal=(SignalCanvas)cs.newInstance(); add(signal,BorderLayout.CENTER); catch(Exception e) add(new Label("您還沒有編寫SignalCanvas類"),BorderLayout.CENTER); setBounds(100,100,360,300); setVisible(true); v
17、alidate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void itemStateChanged(ItemEvent e) String item= choice.getSelectedItem(); / choice返回被選中的條目 int w=signal.getBounds().width; int h=signal.getBounds().height; int m=Math.min(w,h); signal.
18、setRadius(m/6); if(item.equals(itemRed) if(signal!=null) signal.setRed(1); signal.setYellow(0); signal.setGreen(0); signal.setPosition(w/3,0); signal.repaint(); else if(item.equals(itemYellow) if(signal!=null) signal.setRed(0); signal.setYellow(1); signal.setGreen(0); signal.setPosition(w/3,h/3); si
19、gnal.repaint(); else if(item.equals(itemGreen) if(signal!=null) signal.setRed(0); signal.setYellow(0); signal.setGreen(1); signal.setPosition(w/3,2*h/3); signal.repaint(); SignalMainClass.java public class SignalMainClass public static void main(String args) SignalFrame frame; frame=new SignalFrame(
20、) ; frame.setTitle("信號燈"); 2、運(yùn)行結(jié)果:3、實(shí)驗(yàn)結(jié)果與分析:該程序是一個帶有窗口的應(yīng)用程序。在窗口的北面添加了一個下拉列表,該下拉列表有“紅燈”、“黃燈”和“綠燈”三個選項(xiàng)。在窗口的中心添加一個畫布,當(dāng)用戶在下拉列表選擇某項(xiàng)后,畫布上繪制相應(yīng)的信號燈。任務(wù)3 布局與日歷。² 實(shí)驗(yàn)要求:編寫一個應(yīng)用程序,有一個窗口,該窗口為BorderLayout布局。窗口的中心添加一個Panel容器:pCenter,pCenter的布局是7行7列的GriderLayout布局,pCenter中放置49個標(biāo)簽,用來顯示日歷。窗口的北面添加一個Panel容
21、器pNorth,其布局是FlowLayout布局,pNorth放置兩個按鈕:nextMonth和previousMonth,單擊nextMonth按鈕,可以顯示當(dāng)前月的下一月的日歷;單擊previousMonth按鈕,可以顯示當(dāng)前月的上一月的日歷。窗口的南面添加一個Panel容器pSouth,其布局是FlowLayout布局,pSouth中放置一個標(biāo)簽用來顯示一些信息。1、源代碼:CalendarBean.javaimport java.util.Calendar;public class CalendarBean String day; int year=2005,month=0; publ
22、ic void setYear(int year) this.year=year; public int getYear() return year; public void setMonth(int month) this.month=month; public int getMonth() return month; public String getCalendar() String a=new String42; Calendar 日歷=Calendar.getInstance(); 日歷.set(year,month-1,1); int 星期幾=日歷.get(Calendar.DAY
23、_OF_WEEK)-1; int day=0; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) day=31; if(month=4|month=6|month=9|month=11) day=30; if(month=2) if(year%4=0)&&(year%100!=0)|(year%400=0) day=29; else day=28; for(int i=星期幾,n=1;i<星期幾+day;i+) ai=String.valueOf(n) ; n+; return a; Calenda
24、rFrame.javaimport java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.*;public class CalendarFrame extends Frame implements ActionListener Label labelDay=new Label42; Button titleName=new Button7; String name="日","一","二","三", "四"
25、,"五","六" Button nextMonth,previousMonth; int year=2006,month=10; CalendarBean calendar; Label showMessage=new Label("",Label.CENTER); public CalendarFrame() Panel pCenter=new Panel(); pCenter.setLayout(new GridLayout(7,7); /將pCenter的布局設(shè)置為7行7列的GridLayout 布局。 for(int i=0;
26、i<7;i+) titleNamei=new Button(namei); pCenter.add(titleNamei);/pCenter添加組件titleNamei。 for(int i=0;i<42;i+) labelDayi=new Label("",Label.CENTER); pCenter.add(labelDayi);/pCenter添加組件labelDayi。 calendar=new CalendarBean(); calendar.setYear(year); calendar.setMonth(month); String day=cal
27、endar.getCalendar(); for(int i=0;i<42;i+) labelDayi.setText(dayi); nextMonth=new Button("下月"); previousMonth=new Button("上月"); nextMonth.addActionListener(this); previousMonth.addActionListener(this); Panel pNorth=new Panel(), pSouth=new Panel(); pNorth.add(previousMonth); pNo
28、rth.add(nextMonth); pSouth.add(showMessage); showMessage.setText("日歷:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" ); ScrollPane scrollPane=new ScrollPane(); scrollPane.add(pCenter); this.add("Center",pCenter);/ 窗口添加scrollPane在中心區(qū)域 this.add("North&quo
29、t;,pNorth);/ 窗口添加pNorth 在北面區(qū)域 this.add("South",pSouth );/ 窗口添加pSouth 在南區(qū)域。 public void actionPerformed(ActionEvent e) if(e.getSource()=nextMonth) month=month+1; if(month>12) month=1; calendar.setMonth(month); String day=calendar.getCalendar(); for(int i=0;i<42;i+) labelDayi.setText(dayi); else if(e.getSource()=previousMonth) month=month-1; if(month<1) month=12; c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自建樓房買賣合同
- 房產(chǎn)抵押反擔(dān)保合同
- 企業(yè)信息化管理系統(tǒng)建設(shè)與維護(hù)合同
- 體育賽事活動策劃與執(zhí)行合同
- 養(yǎng)豬場生產(chǎn)經(jīng)營合同
- 重慶護(hù)理職業(yè)學(xué)院《化工儀表自動化》2023-2024學(xué)年第二學(xué)期期末試卷
- Unit 2 Topic 1 Section C 教學(xué)設(shè)計(jì) 2024-2025學(xué)年仁愛科普版八年級英語上冊
- 沈陽科技學(xué)院《漆畫創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 《人的正確的思想從哪里來》教學(xué)設(shè)計(jì)
- 哈爾濱學(xué)院《文化創(chuàng)意理論與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 《會計(jì)信息系統(tǒng)應(yīng)用》-課件 王新惠 模塊二 供應(yīng)鏈管理系統(tǒng)
- 美容院會員積分營銷方案
- 水利水電工程金屬結(jié)構(gòu)制作與安裝安全技術(shù)規(guī)程
- DL5000-火力發(fā)電廠設(shè)計(jì)技術(shù)規(guī)程
- 第一節(jié)-原核生物與真核生物DNA的復(fù)制課件
- 2024年4月自考03708中國近現(xiàn)代史綱要試題
- 深部熱療與免疫治療聯(lián)合治療腫瘤
- 2024年貴銀金融租賃公司招聘筆試參考題庫附帶答案詳解
- 眼電生理在視網(wǎng)膜疾病診斷中的應(yīng)用
- 《汽車電氣設(shè)備構(gòu)造與維修》 (第4版) 課件 第四章 發(fā)動機(jī)電器
- 部編版語文六年級下冊第五單元大單元教學(xué)設(shè)計(jì)核心素養(yǎng)目標(biāo)
評論
0/150
提交評論