版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、華北電力大學(xué)實(shí) 驗(yàn) 報(bào) 告| 實(shí)驗(yàn)名稱 Application及Applet程序設(shè)計(jì) 課程名稱 Java程序設(shè)計(jì) | 專業(yè)班級(jí): 學(xué)生姓名: 學(xué) 號(hào): 成 績(jī):指導(dǎo)教師:張學(xué)斌 實(shí)驗(yàn)日期:華 北 電 力 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告一、實(shí)驗(yàn)?zāi)康暮鸵?掌握J(rèn)ava Swing 組件的使用方法;2 理解委托代理事件處理模型掌握;3 掌握窗口菜單和快捷菜單設(shè)計(jì)方式;4 掌握在組件上繪圖的方法;5 掌握Applet應(yīng)用程序的設(shè)計(jì)方法二、實(shí)驗(yàn)環(huán)境Windows2000/Windows XP,JDK 1.21.6 三、實(shí)驗(yàn)內(nèi)容和步驟要求按照實(shí)驗(yàn)內(nèi)容,寫出詳細(xì)實(shí)驗(yàn)過(guò)程和步驟,必要時(shí)截圖。實(shí)驗(yàn)1 算術(shù)測(cè)試1.實(shí)驗(yàn)
2、要求 編寫一個(gè)算術(shù)測(cè)試小軟件,用來(lái)訓(xùn)練小學(xué)生的算術(shù)能力。程序有三個(gè)類組成,其中Teacher對(duì)象充當(dāng)監(jiān)視器,負(fù)責(zé)給出算術(shù)題目,并判斷回答者的答案是否正確;ComputerFrame對(duì)象負(fù)責(zé)為算術(shù)題目提供視圖,比如用戶可以通過(guò)ComputerFrame對(duì)象提供的GUI界面看到題目,并通過(guò)GUI界面給出題目的答案;MailClass是軟件的主類。2.程序模板 MainClass.javapublic class MainClass public static void main(String args) ComputerFrame frame; frame=new ComputerFrame();
3、 frame.setTitle(算術(shù)測(cè)試); frame.setBounds(100,100,650,180); ComputerFrame.java import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame JMenuBar menubar; JMenu choiceGrade; /選擇級(jí)別的菜單 JMenuItem grade1,grade2; JTextField textOne,textTwo,textResult; JButton g
4、etProblem,giveAnwser; JLabel operatorLabel,message; Teacher teacherZhang; ComputerFrame() teacherZhang=new Teacher(); teacherZhang.setMaxInteger(20); setLayout(new FlowLayout(); menubar = new JMenuBar(); choiceGrade = new JMenu(選擇級(jí)別); grade1 = new JMenuItem(幼兒級(jí)別); grade2 = new JMenuItem(兒童級(jí)別); grade
5、1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setMaxInteger(10); ); grade2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setMaxInteger(50); ); choiceGrade.add(grade1); choiceGrade.add(grade2); menubar
6、.add(choiceGrade); setJMenuBar(menubar); 【代碼1】 /創(chuàng)建textOne,其可見(jiàn)字符長(zhǎng)是5 textTwo=new JTextField(5); textResult=new JTextField(5); operatorLabel=new JLabel(+); operatorLabel.setFont(new Font(Arial,Font.BOLD,20); message=new JLabel(你還沒(méi)有回答呢); getProblem=new JButton(獲取題目); giveAnwser=new JButton(確認(rèn)答案); add(ge
7、tProblem); add(textOne); add(operatorLabel); add(textTwo); add(new JLabel(=); add(textResult); add(giveAnwser); add(message); textResult.requestFocus(); textOne.setEditable(false); textTwo.setEditable(false); getProblem.setActionCommand(getProblem); textResult.setActionCommand(answer); giveAnwser.se
8、tActionCommand(answer); teacherZhang.setJTextField(textOne,textTwo,textResult); teacherZhang.setJLabel(operatorLabel,message); 【代碼2】/將teacherZhang注冊(cè)為getProblem的ActionEvent事件監(jiān)視器 【代碼3】/將teacherZhang注冊(cè)為giveAnwser的ActionEvent事件監(jiān)視器 【代碼4】/將teacherZhang注冊(cè)為textResult的ActionEvent事件監(jiān)視器 setVisible(true); valid
9、ate(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); Techaer.javaimport java.util.Random;import java.awt.event.*;import javax.swing.*;public class Teacher implements ActionListener int numberOne,numberTwo; String operator=; boolean isRight; Random random; /用于給出隨機(jī)數(shù) int maxInteger; /題目中最大的整數(shù) JTextField
10、textOne,textTwo,textResult; JLabel operatorLabel,message; Teacher() random = new Random(); public void setMaxInteger(int n) maxInteger=n; public void actionPerformed(ActionEvent e) String str = e.getActionCommand(); if(str.equals(getProblem) numberOne = random.nextInt(maxInteger)+1;/1至maxInteger之間的隨
11、機(jī)數(shù); numberTwo=random.nextInt(maxInteger)+1; double d=Math.random(); / 獲取(0,1)之間的隨機(jī)數(shù) if(d=0.5) operator=+; else operator=-; textOne.setText(+numberOne); textTwo.setText(+numberTwo); operatorLabel.setText(operator); message.setText(請(qǐng)回答); textResult.setText(null); else if(str.equals(answer) String answ
12、er=textResult.getText(); try int result=Integer.parseInt(answer); if(operator.equals(+) if(result=numberOne+numberTwo) message.setText(你回答正確); else message.setText(你回答錯(cuò)誤); else if(operator.equals(-) if(result=numberOne-numberTwo) message.setText(你回答正確); else message.setText(你回答錯(cuò)誤); catch(NumberForma
13、tException ex) message.setText(請(qǐng)輸入數(shù)字字符); public void setJTextField(JTextField . t) textOne=t0; textTwo=t1; textResult=t2; public void setJLabel(JLabel .label) operatorLabel=label0; message=label1; 3.實(shí)驗(yàn)指導(dǎo) Jbutton對(duì)象可觸發(fā)ActionEvent事件。為了能監(jiān)視到此類事件,事件源必須使用addActionListener方法獲得監(jiān)視器,創(chuàng)建監(jiān)視器的類必須實(shí)現(xiàn)接口ActionListener
14、。4.實(shí)驗(yàn)擴(kuò)展 (1)模仿本實(shí)驗(yàn)代碼,再增加“小學(xué)生”級(jí)別。 (2)給出上述程序增加測(cè)試乘法的功能。實(shí)驗(yàn)2 布局與日歷1. 實(shí)驗(yàn)要求編寫一個(gè)應(yīng)用程序,有一個(gè)窗口,該窗口的布局為BorderLayout布局。窗口的中心添加一個(gè)JPanel容器pCenter, pCenter的布局是7行7列的GriderLayout布局,pCenter中放置49個(gè)標(biāo)簽,用來(lái)顯示日歷。窗口的北面添加一個(gè)JPanel容器pNorth,其布局是FlowLayout布局,pNorth放置兩個(gè)按鈕:nextMonth和previousMonth。單擊nextMonth按鈕,可以顯示當(dāng)前月的下一月的日歷;單擊previous
15、Month按鈕,可以顯示當(dāng)前月的上一月的日歷;窗口的南面添加一個(gè)Jpanel容器pSouth,其布局是FlowLayout布局,pSouth中放置一個(gè)標(biāo)簽用來(lái)顯示一些信息。2.程序模板 CalendarMainClass.javapublic class CalendarMainClass public static void main(String args) CalendarFrame frame=new CalendarFrame(); frame.setBounds(100,100,360,300); frame.setVisible(true); frame.setYearAndMo
16、nth(2015,5); CalendarBean.javaimport java.util.Calendar;public class CalendarBean String day; int year=2005,month=0; public 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 get
17、Calendar() String a=new String42; Calendar 日歷=Calendar.getInstance(); 日歷.set(year,month-1,1); int 星期幾=日歷.get(Calendar.DAY_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)|(
18、year%400=0) day=29; else day=28; for(int i=星期幾,n=1;i星期幾+day;i+) ai=String.valueOf(n) ; n+; return a; CalendarFrame.javaimport java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;public class CalendarFrame extends JFrame implements ActionListener JLa
19、bel labelDay=new JLabel42; JButton titleName=new JButton7; String name=日,一,二,三, 四,五,六; JButton nextMonth,previousMonth; CalendarBean calendar; JLabel showMessage=new JLabel(,JLabel.CENTER); int year=2011,month=2; public CalendarFrame() JPanel pCenter=new JPanel(); 【代碼1】 /將pCenter的布局設(shè)置為7行7列的GridLayou
20、t 布局。 for(int i=0;i7;i+) titleNamei=new JButton(namei); titleNamei.setBorder(new SoftBevelBorder(BevelBorder.RAISED); pCenter.add(titleNamei); for(int i=0;i42;i+) labelDayi=new JLabel(,JLabel.CENTER); labelDayi.setBorder(new SoftBevelBorder(BevelBorder.LOWERED); 【代碼2】/pCenter添加組件labelDayi。 calendar=
21、new CalendarBean(); nextMonth=new JButton(下月); previousMonth=new JButton(上月); nextMonth.addActionListener(this); previousMonth.addActionListener(this); JPanel pNorth=new JPanel(), pSouth=new JPanel(); pNorth.add(previousMonth); pNorth.add(nextMonth); pSouth.add(showMessage); add(pCenter,BorderLayout
22、.CENTER); 【代碼3】 / 窗口添加pNorth 在北面區(qū)域 【代碼4】 / 窗口添加pSouth 在南區(qū)域。 setYearAndMonth(year,month); setDefaultCloseOperation(DISPOSE_ON_CLOSE); public void setYearAndMonth(int y,int m) calendar.setYear(y); calendar.setMonth(m); String day=calendar.getCalendar(); for(int i=0;i12) month=1; calendar.setMonth(mont
23、h); String day=calendar.getCalendar(); for(int i=0;i42;i+) labelDayi.setText(dayi); else if(e.getSource()=previousMonth) month=month-1; if(month1) month=12; calendar.setMonth(month); String day=calendar.getCalendar(); for(int i=0;i42;i+) labelDayi.setText(dayi); showMessage.setText(日歷:+calendar.getY
24、ear()+年+calendar.getMonth()+月 ); 3.實(shí)驗(yàn)擴(kuò)展 在CalendarFrame類中增加一個(gè)JTextField文本框,用戶可以通過(guò)在文本框中輸入年份來(lái)修改calendar對(duì)象的int成員year實(shí)驗(yàn)3 英語(yǔ)單詞拼寫訓(xùn)練1.實(shí)驗(yàn)要求 編寫一個(gè)應(yīng)用程序,要求如下:l 窗口有一個(gè)TextField對(duì)象和一個(gè)按鈕對(duì)象,將這兩個(gè)對(duì)象添加到一個(gè)面板中,然后將該面板添加到窗口的上面。l 用戶在TextField對(duì)象中輸入一個(gè)英文單詞,然后按Enter或單擊“確定”按鈕,程序?qū)?chuàng)建若干個(gè)不可編輯的文本框,每個(gè)文本框隨機(jī)顯示英文單詞中的一個(gè)字母。要求將這些文本框按一行添加到一個(gè)面板
25、中,然后將該面板添加到窗口的中心。l 用戶用鼠標(biāo)單擊一個(gè)文本框后,通過(guò)按下鍵盤上的“”和“”鍵交換相鄰文本框中的字母,使得這些文本框中的字母的排列順序和英文單詞中字母的順序相同。2.程序模板 WordMainClass.javapublic class WordMainClass public static void main(String args) new SpellingWordFrame(); -RondomString.javapublic class RondomString /負(fù)責(zé)隨機(jī)排列單詞中的字母 String str=; public String getRondomStr
26、ing(String s) StringBuffer strBuffer=new StringBuffer(s); int m=strBuffer.length(); for(int k=0;km;k+) int index=(int)(Math.random()*strBuffer.length();/Math.random()返回(0,1)之間的隨機(jī)數(shù) char c=strBuffer.charAt(index); str=str+c; strBuffer=strBuffer.deleteCharAt(index); return str; -LetterLabel.javaimport
27、java.awt.*;import java.awt.event.*;import javax.swing.*;public class LetterLabel extends JTextField implements FocusListener LetterLabel() setEditable(false); addFocusListener(this);/【代碼1】 /將當(dāng)前對(duì)象注冊(cè)為自身的焦點(diǎn)視器 setBackground(Color.white); setFont(new Font(Arial,Font.PLAIN,30); public static LetterLabel g
28、etLetterLabel(int n) LetterLabel a=new LetterLabeln; for(int k=0;k0) label=LetterLabel.getLetterLabel(n); for(int k=0;klabel.length;k+) labelk.setText(+randomWord.charAt(k); wordBox.add(labelk); 【代碼2】 /將當(dāng)前窗口注冊(cè)為labelk的鍵盤監(jiān)視器 validate(); inputWord.setText(null); label0.requestFocus(); public void keyPr
29、essed(KeyEvent e) LetterLabel sourceLabel=(LetterLabel)e.getSource(); int index=-1; if(e.getKeyCode()=KeyEvent.VK_LEFT) for(int k=0;klabel.length;k+) if(labelk=sourceLabel) index=k; break; if(index!=0) /交換文本框中的字母 String temp=labelindex.getText(); labelindex.setText(labelindex-1.getText(); labelindex
30、-1.setText(temp); labelindex-1.requestFocus(); else if(【代碼3】) /判斷按下的是否是鍵 for(int k=0;klabel.length;k+) if(labelk=sourceLabel) index=k; break; if(index!=label.length-1) String temp=labelindex.getText(); labelindex.setText(labelindex+1.getText(); labelindex+1.setText(temp); labelindex+1.requestFocus()
31、; validate(); public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) String success=; for(int k=0;klabel.length;k+) String str=labelk.getText(); success=success+str; if(success.equals(word) messaageLabel.setText(恭喜你,你成功了); for(int k=0;klabel.length;k+) labelk.removeKeyListener(this); l
32、abelk.removeFocusListener(labelk); labelk.setBackground(Color.white); inputWord.requestFocus(); 3.實(shí)驗(yàn)擴(kuò)展 增加記錄用戶移動(dòng)字母次數(shù)的功能,即當(dāng)用戶拼寫成功后,messageLabel標(biāo)簽顯示的信息中包含用戶移動(dòng)字母的次數(shù)。實(shí)驗(yàn)4 字體對(duì)話框1.實(shí)驗(yàn)要求編寫一個(gè)FontFamily類,該類對(duì)象可以獲取當(dāng)前機(jī)器可用的全部字體名稱。 編寫一個(gè)JDialog的子類FontDialog,該類為FontFamily對(duì)象維護(hù)的數(shù)據(jù)提供視圖,要求FontDialog對(duì)象使用下拉列表顯示FontFamily對(duì)象維
33、護(hù)的全部字體的名稱,當(dāng)選擇下拉列表中某個(gè)字體名稱后,F(xiàn)ontDialog對(duì)象用標(biāo)簽顯示該字體的效果。要求對(duì)話框提供返回下拉列表中所選擇的字體名稱的方法。 編寫一個(gè)窗口,該窗口中有“設(shè)置字體”按鈕和一文本區(qū)對(duì)象,當(dāng)單擊該按鈕時(shí),彈出一個(gè)FontDialog創(chuàng)建的對(duì)話框,然后根據(jù)用戶在對(duì)話框下拉列表中選擇的字體來(lái)顯示文本區(qū)中的文本。2.程序模板 FontDialogMainClass.javapublic class FontDialogMainClass public static void main(String args) FrameHaveDialog win=new FrameHaveD
34、ialog(); - FontFamilyNames.javaimport java.awt.GraphicsEnvironment;public class FontFamilyNames String allFontNames; public String getFontName() GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); allFontNames=ge.getAvailableFontFamilyNames(); return allFontNames; - FontDialog.
35、javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;public class FontDialog extends JDialog implements ItemListener,ActionListener FontFamilyNames fontFamilyNames; int fontSize=38; String fontName; JComboBox fontNameList,fontSizeList; JLabel label; Font font; JButton yes,cancel; stati
36、c int YES=1,NO=0; int state=-1; FontDialog(JFrame f) super(f); setTitle(字體對(duì)話框); font=new Font(宋體,Font.PLAIN,12); fontFamilyNames=new FontFamilyNames(); 【代碼1】 /當(dāng)前對(duì)話框調(diào)用setModal(boolean b)設(shè)置為有模式 yes=new JButton(Yes); cancel=new JButton(cancel); yes.addActionListener(this); cancel.addActionListener(this
37、); label=new JLabel(hello,奧運(yùn),JLabel.CENTER); fontNameList=new JComboBox(); fontSizeList=new JComboBox(); String name=fontFamilyNames.getFontName(); fontNameList.addItem(字體); for(int k=0;kname.length;k+) fontNameList.addItem(namek); fontSizeList.addItem(大小); for(int k=8;k72;k=k+2) fontSizeList.addIte
38、m(new Integer(k); fontNameList.addItemListener(this); fontSizeList.addItemListener(this); JPanel pNorth=new JPanel(); pNorth.add(fontNameList); pNorth.add(fontSizeList); add(pNorth,BorderLayout.NORTH); add(label,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.add(yes); pSouth.add(cancel); add(pSouth,BorderLayout.SOUTH); setBounds(100,100,280,170); setDefaultCloseOperation(DISPOSE_ON
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《從傳統(tǒng)到時(shí)尚》課件
- 七大洲四大洋的位置
- 山東省煙臺(tái)市招遠(yuǎn)市(五四學(xué)制)2024-2025學(xué)年九年級(jí)上學(xué)期期末考試道德與法治試卷(含答案)
- 2024年全國(guó)社會(huì)工作者初級(jí)職業(yè)水平《社會(huì)工作實(shí)務(wù)》考試題參考答案
- 單位管理制度展示合集【人事管理篇】
- 單位管理制度展示大合集職員管理十篇
- 定期報(bào)告:一月可能繼續(xù)震蕩偏強(qiáng)中小盤成長(zhǎng)占優(yōu)
- 2024-2030年中國(guó)偶氮顏料行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 單位管理制度展示大合集職工管理篇十篇
- 單位管理制度品讀選集【員工管理篇】
- NB-T35009-2013抽水蓄能電站選點(diǎn)規(guī)劃編制規(guī)范
- 曳引驅(qū)動(dòng)電梯調(diào)試作業(yè)指導(dǎo)書
- 上海市中考英語(yǔ)試卷及答案
- 基礎(chǔ)會(huì)計(jì)課程思政教案設(shè)計(jì)
- 蘇教版科學(xué)小學(xué)五年級(jí)上冊(cè)期末測(cè)試卷及完整答案(奪冠系列)
- 監(jiān)控工程竣工驗(yàn)收?qǐng)?bào)告
- 經(jīng)皮肝穿刺膽道引流(PTCD)導(dǎo)管的護(hù)理要點(diǎn)
- 國(guó)家開(kāi)放大學(xué)《心理學(xué)》形考任務(wù)1-4參考答案
- 2024年社會(huì)工作者《社會(huì)工作實(shí)務(wù)(中級(jí))》考試真題必考題
- 國(guó)家基層糖尿病神經(jīng)病變?cè)\治指南(2024版)
- FZ∕T 74001-2020 紡織品 針織運(yùn)動(dòng)護(hù)具
評(píng)論
0/150
提交評(píng)論