版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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)過程和步驟,必要時(shí)截圖。實(shí)驗(yàn)1 算術(shù)測(cè)試1.實(shí)驗(yàn)
2、要求 編寫一個(gè)算術(shù)測(cè)試小軟件,用來訓(xùn)練小學(xué)生的算術(shù)能力。程序有三個(gè)類組成,其中Teacher對(duì)象充當(dāng)監(jiān)視器,負(fù)責(zé)給出算術(shù)題目,并判斷回答者的答案是否正確;ComputerFrame對(duì)象負(fù)責(zé)為算術(shù)題目提供視圖,比如用戶可以通過ComputerFrame對(duì)象提供的GUI界面看到題目,并通過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,其可見字符長(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(你還沒有回答呢); 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)簽,用來顯示日歷。窗口的北面添加一個(gè)JPanel容器pNorth,其布局是FlowLayout布局,pNorth放置兩個(gè)按鈕:nextMonth和previousMonth。單擊nextMonth按鈕,可以顯示當(dāng)前月的下一月的日歷;單擊previous
15、Month按鈕,可以顯示當(dāng)前月的上一月的日歷;窗口的南面添加一個(gè)Jpanel容器pSouth,其布局是FlowLayout布局,pSouth中放置一個(gè)標(biāo)簽用來顯示一些信息。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文本框,用戶可以通過在文本框中輸入年份來修改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è)文本框后,通過按下鍵盤上的“”和“”鍵交換相鄰文本框中的字母,使得這些文本框中的字母的排列順序和英文單詞中字母的順序相同。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ì)話框下拉列表中選擇的字體來顯示文本區(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房地產(chǎn)中介客戶信息保密協(xié)議范本2篇
- 二零二五年三方二手車交易風(fēng)險(xiǎn)防范及保險(xiǎn)合同2篇
- 二零二五年度企業(yè)合同管理培訓(xùn)與人才發(fā)展意見建議書3篇
- 護(hù)理本科專業(yè)課課程思政教學(xué)評(píng)價(jià)指標(biāo)體系的構(gòu)建
- 服裝知識(shí)培訓(xùn)課件
- 2025版綠色家居裝飾工程勞務(wù)合作合同2篇
- Unit 4《Lesson 3 My tidy bag》(說課稿)-2024-2025學(xué)年粵人版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 工業(yè)機(jī)器人智能生產(chǎn)線升級(jí)改造擴(kuò)建項(xiàng)目可行性研究報(bào)告寫作模板-備案審批
- 二零二五年度房地產(chǎn)項(xiàng)目股權(quán)劃轉(zhuǎn)及融資合作協(xié)議3篇
- 湖南省長(zhǎng)沙市2025年新高考適應(yīng)性考試生物學(xué)模擬試題(含答案)
- 智能制造企業(yè)數(shù)字化轉(zhuǎn)型建設(shè)方案
- (隱蔽)工程現(xiàn)場(chǎng)收方計(jì)量記錄表
- 病理生理學(xué)課件脂代謝紊亂
- 教師幽默朗誦節(jié)目《我愛上班》
- 《細(xì)胞工程學(xué)》考試復(fù)習(xí)題庫(kù)(帶答案)
- 中學(xué)課堂教學(xué)評(píng)價(jià)量表
- 食堂食材配送以及售后服務(wù)方案
- 稱量與天平培訓(xùn)試題及答案
- 塊單項(xiàng)活動(dòng)教學(xué)材料教案丹霞地貌
- 青年人應(yīng)該如何樹立正確的人生觀
- 開封辦公樓頂發(fā)光字制作預(yù)算單
評(píng)論
0/150
提交評(píng)論