JAVA游戲開(kāi)發(fā)-從零開(kāi)始開(kāi)發(fā)貪吃蛇、電梯模擬游戲-全
《JAVA游戲開(kāi)發(fā)-從零開(kāi)始開(kāi)發(fā)貪吃蛇、電梯模擬游戲-全》由會(huì)員分享,可在線閱讀,更多相關(guān)《JAVA游戲開(kāi)發(fā)-從零開(kāi)始開(kāi)發(fā)貪吃蛇、電梯模擬游戲-全(209頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、JAVA游戲開(kāi)發(fā)從零開(kāi)始開(kāi)發(fā)貪吃蛇、電梯模擬游戲,,Java遊戲開(kāi)發(fā)(貪吃蛇、電梯模擬遊戲)學(xué)習(xí)情境1:Java遊戲體驗(yàn),08遊戲3-2,目標(biāo)和任務(wù),目標(biāo): 瞭解本課程的教學(xué)目的和教學(xué)內(nèi)容 瞭解 Java遊戲架構(gòu),Java運(yùn)行機(jī)制,Java程式的開(kāi)發(fā)流程,各種Java開(kāi)發(fā)平臺(tái) 掌握J(rèn)ava平臺(tái)的使用方法和技巧 以小組為單位互相合作完成任務(wù) 任務(wù): 在Java平臺(tái)運(yùn)行貪吃蛇遊戲、電梯模擬遊戲,兩個(gè)真實(shí)的Java遊戲,本課程學(xué)完後要完成的兩個(gè)Java遊戲: (1)貪吃蛇遊戲 (2)電梯模擬遊戲,學(xué)習(xí)過(guò)程,教師先介紹本課程的基本情況、學(xué)習(xí)內(nèi)容和學(xué)習(xí)要求,然後演示一個(gè)已完成的遊戲程式,讓學(xué)生明確學(xué)習(xí)
2、目標(biāo),產(chǎn)生學(xué)習(xí)興趣。再介紹Java基本知識(shí)和平臺(tái)使用方法技巧。 步驟一:瞭解課程的基本情況和學(xué)習(xí)內(nèi)容 步驟二:小組討論:手機(jī)裡有什麼常見(jiàn)的遊戲?(例如:貪吃蛇等) 步驟三:觀看Java開(kāi)發(fā)的遊戲(模擬電梯遊戲、貪吃蛇遊戲) 步驟四:查看遊戲的原始程式碼,瞭解使用的編碼語(yǔ)言Java 步驟五:學(xué)習(xí)Java語(yǔ)言的背景和相關(guān)基礎(chǔ)知識(shí) 步驟六:學(xué)習(xí)Java平臺(tái)的安裝和使用方法 步驟七:學(xué)生自己運(yùn)行一個(gè)簡(jiǎn)單遊戲的原始程式碼(例如:貪吃蛇)。 步驟八:學(xué)生嘗試自己編寫一個(gè)簡(jiǎn)單的Java程式,實(shí)踐指導(dǎo),1、安裝並配置Java開(kāi)發(fā)平臺(tái): 安裝Java 2SDK開(kāi)發(fā)工具 。 設(shè)置環(huán)境變數(shù): path=javac和
3、java命令所在的目錄。 classpath=存放位元組碼檔的目錄。 2、查看一個(gè)完整的Java遊戲原始程式碼,瞭解Java程式結(jié)構(gòu)和特徵: (1)打開(kāi)Java遊戲來(lái)源程式檔 (2)觀察程式結(jié)構(gòu)和特徵 (注:Java遊戲來(lái)源程式由教師提供,教師可提供貪吃蛇遊戲的原始程式碼給學(xué)生觀摩),動(dòng)手實(shí)踐,3、使用Java整合式開(kāi)發(fā)環(huán)境調(diào)試運(yùn)行Java程式 編輯並保存java程式 解釋java程式形成中間檔 運(yùn)行Java程式,得到結(jié)果,Java相關(guān),一、1995年Java被正式發(fā)佈 二、Java目前的主要應(yīng)用 許多大公司購(gòu)買了Java的許可證。 眾多軟體發(fā)展商開(kāi)始支持Java軟體產(chǎn)品。 物件導(dǎo)向的應(yīng)用開(kāi)發(fā)
4、。 Intranet(企業(yè)內(nèi)部網(wǎng))上的軟體發(fā)展。 動(dòng)態(tài)畫(huà)面的設(shè)計(jì),包括圖形圖像的調(diào)用。 與各類資料庫(kù)連接查詢的SQL語(yǔ)句實(shí)現(xiàn)。 其他應(yīng)用類型的程式。,三、Java語(yǔ)言的特點(diǎn),簡(jiǎn)單性: 它摒棄了C++中許多低級(jí)、困難、容易混淆、出錯(cuò)或不經(jīng)常使用的功能 物件導(dǎo)向:程式=對(duì)象+消息。支持封裝、多態(tài)性和繼承。,三、Java語(yǔ)言的特點(diǎn),可攜性: Java來(lái)源程式經(jīng)過(guò)編譯器編譯,會(huì)被轉(zhuǎn)換成一種我們稱之為“位元組碼(bytecodes)”的目的程式?!拔辉M碼”的最大特點(diǎn)便是可以跨平臺(tái)運(yùn)行,即程式設(shè)計(jì)人員們常說(shuō)的“編寫一次,到處運(yùn)行”,正是這一特性成為Java得以迅速普及的重要原因。解釋性:採(cǎi)用先經(jīng)過(guò)編譯器
5、編譯、再利用解譯器解釋的方式運(yùn)行,三、Java語(yǔ)言的特點(diǎn),高性能: 用Java語(yǔ)言編輯的來(lái)源程式的執(zhí)行方法是採(cǎi)用先經(jīng)過(guò)編譯器編譯、再利用解譯器解釋的方式來(lái)運(yùn)行的。它綜合了解釋性語(yǔ)言與編譯語(yǔ)言的眾多優(yōu)點(diǎn),使其執(zhí)行效率較以往的程式設(shè)計(jì)語(yǔ)言有了大幅度的提高。,三、Java語(yǔ)言的特點(diǎn),併發(fā)性: Java的多執(zhí)行緒機(jī)制使應(yīng)用程式中的執(zhí)行緒能夠併發(fā)執(zhí)行,且其同步機(jī)制保證了對(duì)共用資料的正確操作。通過(guò)使用多執(zhí)行緒,程式設(shè)計(jì)者可以分別用不同的執(zhí)行緒完成特定的行為,而不需要採(cǎi)用全域的事件迴圈機(jī)制,這樣就很容易在網(wǎng)路上實(shí)現(xiàn)即時(shí)交互行為。 豐富的API(Application ProgramInterface)文檔和
6、類庫(kù),程式師的開(kāi)發(fā)工作可以在一個(gè)更高的層次上展開(kāi),這也正是Java受歡迎的重要原因之一。Java同時(shí)為用戶提供了詳盡的API文檔說(shuō)明。,四、Java程式工作機(jī)制,Java程式的組成結(jié)構(gòu),五、Java應(yīng)用程式(教師提供) Java程式的組成結(jié)構(gòu) (1)至多有一個(gè)public類,檔案名必須與類名相同。 (2)程式可以有一個(gè)或多個(gè)其它類。 (3)當(dāng)需要從某個(gè)類繼承或使用某個(gè)類及其方法時(shí),使用import引入該類的定義。 (4)Java程式組成結(jié)構(gòu) package//0個(gè)或1個(gè),必須放在檔開(kāi)始 import//0個(gè)或多個(gè),必須放在所有類定義之前 public classDefinition//0
7、個(gè)或1個(gè),檔案名必須與類名相同 classDefinition //0個(gè)或多個(gè) interface Definition //0個(gè)或多個(gè),六、Java開(kāi)發(fā)平臺(tái),(1)JDK + EditPlus (2)JDK + Jcreate (3)JDK + Eclipse,七、Java程式的開(kāi)發(fā)及運(yùn)行過(guò)程,,Java遊戲開(kāi)發(fā)(貪吃蛇、電梯模擬遊戲)學(xué)習(xí)情境2:Java類設(shè)計(jì),08遊戲3-2,目標(biāo)和任務(wù),目標(biāo): 能根據(jù)需求設(shè)計(jì)和使用Java類 ,能理解MVC設(shè)計(jì)模式 ,能與小組其他成員協(xié)作完成任務(wù),能使用API,教學(xué)案例,學(xué)習(xí)指引輔助學(xué)習(xí) 任務(wù): 設(shè)計(jì)EnterDate.Java類,使用它可
8、以創(chuàng)建、記錄、讀取特殊的日期,按電梯模擬遊戲的設(shè)計(jì)UML圖創(chuàng)建電梯模擬遊戲中的類。,學(xué)習(xí)過(guò)程,項(xiàng)目核心:模仿教師提供的一個(gè)核心案例,學(xué)習(xí)類的編寫方法 功能擴(kuò)展1:擴(kuò)展類,為類添加更多的屬性、方法、存取控制 功能擴(kuò)展2:使用已有的類 應(yīng)用升級(jí):分析電梯模擬遊戲的類圖,模仿核心案例編寫電梯遊戲所需的類,物件導(dǎo)向程式設(shè)計(jì)概述,面向過(guò)程 程式設(shè)計(jì)語(yǔ)言:C 程式模組:函數(shù),函數(shù)能完成一定的功能,有輸入和輸出.資料單獨(dú)存放. 物件導(dǎo)向 程式設(shè)計(jì)語(yǔ)言:C++,VB,Java 程式模組:類(對(duì)象),類的屬性保存資料,類的方法完成功能,有輸入和輸出.,Java類,Java中所有的程式都由一個(gè)或多個(gè)類組成 設(shè)計(jì)J
9、ava程式就是設(shè)計(jì)Java的類 先有類,再創(chuàng)建類的對(duì)象,通過(guò)物件使用類 類由屬性和方法構(gòu)成. Java中的系統(tǒng)類和自訂類 學(xué)習(xí)Java,先學(xué)會(huì)使用系統(tǒng)類完成一定的功能,再學(xué)習(xí)自己設(shè)計(jì)一些類.,程式1-1,EnterDate類 定義一個(gè)類,又叫聲明一個(gè)類,它有固定的書(shū)寫格式類聲明的格式. 掌握屬性的聲明和方法的聲明,就掌握了類的聲明. 注意類聲明時(shí)的一些規(guī)範(fàn). class extends implements ,* 類體,項(xiàng)目核心,供學(xué)生模仿,它具有完整的類格式,但只包含少數(shù)屬性和操作該屬性的方法 //核心案例,檔案名:EnterDate.Java, public class EnterDat
10、e public int year; public void setYear(int newYear) if (newYear<0) System.out.println(所給的年份參數(shù)不合理,設(shè)置操作被拒絕!); return; year=newYear; //end setYear(int newYear)方法 //提供對(duì)屬性year進(jìn)行讀取的方法 public int getYear() return year; //測(cè)試上述屬性和方法能否正確使用 public static void main(String args) EnterDate hubd; hub
11、d=new EnterDate(); hubd.setYear(1980); System.out.println(year=+hubd. getYear()); ,類的使用,2、類的使用 先定義一個(gè)類 再創(chuàng)建這個(gè)類的物件 類名 對(duì)象名= new類的構(gòu)造方法; 通過(guò)調(diào)用物件的屬性和方法來(lái)使用這個(gè)物件,即使用類來(lái)完成一定的事(功能) 對(duì)象名.屬性; 對(duì)象名.方法; 示例:使用核心案例EnterDate類。 核心案例就是EnterDate類的定義 (2)EnterDate hubd = new EnterDate(); (3)hubd.setYear(1980);,EnterDate.Jav
12、a類的測(cè)試,類testEnterDate 在另一個(gè)新類testEnterDate中使用EnterDate,如下所示, // public class testEnterDate public static void main(String args) EnterDate hubd,humm; hubd=new EnterDate(); humm=new EnterDate(182,45,69); hubd.setYear(1980); hubd.setMonth(8); hubd.setDay(28); ,測(cè)試EnterDate中方法與屬性的結(jié)果:,構(gòu)造器,構(gòu)造器又叫構(gòu)造方法,構(gòu)造函數(shù)。構(gòu)造方
13、法是Java類中一種特殊的方法。它體現(xiàn)在: (1)構(gòu)造方法的方法名必須與類名完全相同。 (2)一個(gè)類可以定義多個(gè)構(gòu)造方法,這叫構(gòu)造方法的重載。 (3)沒(méi)有參數(shù)的構(gòu)造方法叫默認(rèn)構(gòu)造方法,有參數(shù)的叫非默認(rèn)構(gòu)造方法。 (4)一個(gè)類如果一個(gè)構(gòu)造方法都沒(méi)有定義,則它繼承父類的構(gòu)造方法。 (5)當(dāng)一個(gè)類中定義了非默認(rèn)的構(gòu)造方法後,默認(rèn)的構(gòu)造方法就失效了,除非再定一個(gè)默認(rèn)構(gòu)造方法的定義。,信息隱藏和封裝,屬性和方法可以沒(méi)有修飾符,有public修飾符、有private修飾符,有protected修飾符。屬性和方法修飾符不同,可以控制它們被訪問(wèn)的範(fàn)圍。 用private修飾不想被其它類訪問(wèn)的屬性和方法,以達(dá)到
14、資訊隱藏的目的。 用public修飾哪些不想隱藏的屬性和方法,以達(dá)到可以被子類繼承或被別的類訪問(wèn)的目的。,使用繼承創(chuàng)建類,Java用extends實(shí)現(xiàn)繼承,快速創(chuàng)建類 Java支持單繼承,一個(gè)子類只能有一個(gè)父類 子類繼承父類的屬性和方法 在Java程式設(shè)計(jì)中應(yīng)該多使用繼承 class extends implements,* 類體,功能擴(kuò)展 :使用繼承,定義一個(gè)person類作為父類,代碼如下: class Person private String name; private int age; public Person(String name, int age) this.name=nam
15、e; this.age= age; public Person(String name) this(name, 20); public Person() name=; age=20; public String getName() return name; public int getAge() return age; public void setName(String name) this.name=name; public void setAge(int age) this.age=age; public String getInfo() return name:+name+nage
16、:+age; // end class Person,功能擴(kuò)展 :使用繼承,Student先繼承Person,後重載Person中的方法 從上面的Person類繼承一個(gè)子類Student類,並在子類中重載父類Person中的方法 class Student extends Person private String school;//增加新屬性 public Student(String name, int age, String school) super(name, age); this.school=school; public Student(String name, Strin
17、g school) super(name); this.school=school; public Student(String school) this.school=school; //重載構(gòu)造方法 public Student() school=; public String getSchool() return school; //增加新的方法 public void setSchool() this.school=school; //增加新的方法 public String getInfo() return super.getInfo()+nschool:+scho
18、ol;//重載 ,功能擴(kuò)展 :使用繼承,設(shè)計(jì)一個(gè)類使用Person,Student public class P49 public static void main(String args) Person person= new Person(張三,21); System.out.println(person.getInfo()); Student student= new Student(李四,22,sziit); System.out.println(student.getInfo()); Person s = new Student(王五,23,szpt); System.out.pri
19、ntln(s.getInfo()); ,方法重載,一個(gè)類多個(gè)同名的方法叫重載 重載不同重寫 普通方法與構(gòu)造方法都可以重載 普通方法重載規(guī)則: 重載方法的參數(shù)列表必須和被重載的方法不同。 重載方法的返回類型可以和被重載的方法不同,但僅此還不夠。 重載方法可以改變存取控制級(jí)別,構(gòu)造器的重載,構(gòu)造器也可以重載 用this調(diào)用自己的構(gòu)造方法 用super調(diào)用父類的構(gòu)造方法 this和super不能同時(shí)出現(xiàn) this和super只能出現(xiàn)在第一行 如果你類中沒(méi)有顯式的默認(rèn)構(gòu)造器,不能用super()。,方法覆蓋,子類可以重寫父類中同名的方法 重寫也稱為覆蓋 重寫時(shí)注意: 方法名必須與被重寫的方法一樣 參數(shù)
20、列表必須與被重寫的方法一樣 返回類型必須與被重寫的方法一樣 存取控制級(jí)別不能比被重寫的方法更嚴(yán)格,由覆蓋和重載產(chǎn)生的多態(tài)性,物件導(dǎo)向三大特徵: 封裝、繼承、多態(tài) 多態(tài): 編譯時(shí)多態(tài) 運(yùn)行時(shí)多態(tài) 多態(tài)參數(shù),Static和final,static 用static修飾的成份叫靜態(tài)成份,如靜態(tài)屬性、靜態(tài)方法、靜態(tài)類。 static可以修飾屬性和方法,內(nèi)部類,不能用來(lái)修飾一般的類。 用static修飾的屬性成為全域變數(shù),所有類的實(shí)例共用一個(gè)靜態(tài)屬性。 用static修飾的方法不能在子類中重寫,Static和final,靜態(tài)成員沒(méi)有this。 訪問(wèn)靜態(tài)成員,可不用創(chuàng)建物件,直接用類名訪問(wèn)。 在類的方法的外
21、部,可以定義靜態(tài)塊static 靜態(tài)塊常用於進(jìn)行靜態(tài)屬性的初始化。 靜態(tài)塊的產(chǎn)生,源於任何的動(dòng)作陳述式必須屬於某個(gè)方法這個(gè)規(guī)定。 final 可以使用final來(lái)修飾類,屬性,方法。 一個(gè)類用final修飾,則它不可以被繼承。 一個(gè)屬性用final修飾,則它將成為一個(gè)常量。 一個(gè)方法用final修飾,則它不能被重寫。,抽象類別,抽象方法就是不完整的方法,方法體為空。 類中有抽象方法,則類必須為抽象類別 用abstract修飾的類叫抽象類別 如果子類沒(méi)有實(shí)現(xiàn)父類中的抽象方法,則子類必須也為抽象類別。 一個(gè)類不能同時(shí)用abstract和final修飾。,介面,當(dāng)一個(gè)類中所有的方法都是抽象方法時(shí),J
22、ava將它定義為介面。 interface 和繼承父類相似,類可以實(shí)現(xiàn)介面。 class extends implements,* 類體,抽象類別和介面的多態(tài)性,抽象類別和介面都支援多態(tài)性 它們和類的多態(tài)性相似。,內(nèi)部類,就是在一個(gè)類的 中間再定義一個(gè)類, class A class B 編譯後產(chǎn)生A.class和A$B.class兩個(gè)類文件 內(nèi)部類的使用 創(chuàng)建了內(nèi)部類之後,可以在的內(nèi)部或外部使用它 注意: 內(nèi)部類的名稱不能和它的外部類相同 內(nèi)部類可以申明為abstract,並可以被其它內(nèi)部類繼承。 內(nèi)部類可以申明為final的。 內(nèi)部類可以申明為private或protected 非
23、static的內(nèi)部類不能申明除常量之外的靜態(tài)成員。 定義在外部類方法體中的內(nèi)部類稱為本地方法內(nèi)部類,可以訪問(wèn)外部類的其它成員,但不能訪問(wèn)所在方法的區(qū)域變數(shù)。 還有一種特殊的內(nèi)部類,static內(nèi)部類。,Java檔的組織,Java中用包來(lái)組織使用者的原始檔案 一個(gè)Java包可以認(rèn)為是硬碟上的一個(gè)資料夾. Java用package包名;來(lái)創(chuàng)建一個(gè)包. 同一個(gè)包中的類可以互相訪問(wèn). 要訪問(wèn)不同包中的類,用import包名;導(dǎo)入要訪問(wèn)的某包.,包應(yīng)用示例,如圖所示組織Java的文件 將PA1放入package1包中,將PA2放入package2包中,PA2調(diào)用PA1,testPA12調(diào)用PA1和PA2
24、.,包應(yīng)用示例,//關(guān)於包涉及PA1,PA2,testPA12三個(gè)Java原始檔案 //目錄結(jié)構(gòu)d:testpackage1; d:testpackage2 //classpath=.;d:test //來(lái)源程式PA1,PA2,testPA12等隨便放入一個(gè)目錄如d:testsrc //先進(jìn)入dos,進(jìn)入d:testsrc目錄 //用命令列編譯PA1.Java,命令格式Javac -d d:test PA1.Java //用命令列編譯PA2.Java,命令格式Javac -d d:test PA2.Java //行成一個(gè)package1包,包中有一個(gè)檔PA1.class, //行成一個(gè)pack
25、age2包,包中有一個(gè)檔PA2.class //再進(jìn)入d:testsrc目錄 //編譯並運(yùn)行testPA12 //testPA12,能正常說(shuō)明包的運(yùn)行正確 //注意***標(biāo)明的語(yǔ)句,包應(yīng)用示例,package package1;//***將PA1放入package1包中 public class PA1 package package2;//***,將PA2放入與PA1不同的package2包中 import package1.PA1;//***因?yàn)镻A1,PA2不同包,PA2想使用PA1必須先導(dǎo)入 import package1.PA1; //** import package2.PA2;
26、 //**,應(yīng)用升級(jí):按照設(shè)計(jì)說(shuō)明書(shū)的類圖編寫類,問(wèn)題陳述: 某公司打算建造一幢兩層的辦公樓,並為它裝一部電梯。公司要求開(kāi)發(fā)一個(gè)物件導(dǎo)向的類比程式,對(duì)電梯的運(yùn)作進(jìn)行建模,在電梯系統(tǒng)的類比程式裡,公司要求圖形化地顯示執(zhí)行過(guò)程,在適當(dāng)時(shí)刻,螢?zāi)粦?yīng)顯示一個(gè)人走向電梯,按下一個(gè)按鈕,然後進(jìn)入電梯,乘坐電梯,最後走出電梯。該圖形還應(yīng)顯示電梯的移動(dòng)、門的大開(kāi)、指示燈的開(kāi)和關(guān)、按下和重定按鈕式的亮暗變化。,應(yīng)用升級(jí):電梯遊戲系統(tǒng)包含的類,應(yīng)用升級(jí):實(shí)現(xiàn)Elevator類,對(duì)於Elevator類的private屬性moving、summoned、currentFloor、capacity、和traveTim
27、e,他們的聲明代碼為: public class Elevator //attributes private boolean moving; private boolean summoned; private int currentFloor = 1 ; private int destinationFloor = 2 ; private int capacity = 1 ; private int travelTime = 5 ; //constructor public Elevator() ,Java遊戲開(kāi)發(fā)(貪吃蛇、電梯模擬遊戲)學(xué)習(xí)情境3:圖形化使用者介面設(shè)計(jì),08
28、遊戲3-2,,目標(biāo)和任務(wù),目標(biāo): 為遊戲添加使用者介面,使用者交互 任務(wù): 網(wǎng)上物流系統(tǒng)介面設(shè)計(jì) ,電梯類比遊戲介面設(shè)計(jì),學(xué)習(xí)過(guò)程,,開(kāi)始,圖形化使用者介面(GUI)設(shè)計(jì),學(xué)習(xí)內(nèi)容: GUI概述 容器有容器佈局 事件處理概述 事件模型 事件適配器 常用swing組件,項(xiàng)目:設(shè)計(jì)一個(gè)系統(tǒng)介面如下:,項(xiàng)目分析,可將專案分成三個(gè)模組實(shí)現(xiàn):,所有的GUI都可分成以上三個(gè)模組實(shí)現(xiàn),GUI包,java.awt包,是使用Java進(jìn)行GUI設(shè)計(jì)的基礎(chǔ)。 javax.swing包,幾乎所有AWT組件對(duì)應(yīng)有新功能更強(qiáng)的Swing組件。另外還加入了一些全新的元件。Swing元件在名稱上前面多了一個(gè)字母“J” 2、G
29、UI的創(chuàng)建步驟 (1)引用需要的包和類。 (2)設(shè)置一個(gè)頂層的容器。 (3)根據(jù)需要為容器設(shè)置佈局管理器或使用默認(rèn)佈局管理器。 (4)將組件添加到容器內(nèi),位置自行設(shè)計(jì)。 (5)為回應(yīng)事件的組件編寫事件處理代碼。,容器、組件、佈局和觀感,1容器和組件 元件是可以用圖形化的方式顯示在螢?zāi)簧蟻K能夠與使用者進(jìn)行交互的物件。 容器是一種特殊的元件,一種能夠容納其他元件或容器的元件。 2.佈局管理器 為了使圖形化使用者介面具有良好的平臺(tái)無(wú)關(guān)性,提供了專門用來(lái)管理元件在容器中的佈局的工具。 3.觀感 決定swing應(yīng)用程式的外觀。,常用容器,容器是放置其他Swing組件的頂級(jí)容器 JFrame組件用於在Sw
30、ing程式中創(chuàng)建表單 它的構(gòu)造函數(shù): JFrame() JFrame(String Title) 元件必須添加至內(nèi)容窗格,而不是直接添加至JFrame對(duì)象,示例: frame.getContentPane().add(b);,JPanel組件,用於將小型的羽量級(jí)元件組合在一起 JPanel的缺省佈局為FlowLayout JPanel具有下列構(gòu)造函數(shù): JPanel() JPanel(LayoutManager lm) JApplet也是一種視窗容器,繼承自Applet類,Applet小程式是另一種Java程式,與Applet不同的是,它默認(rèn)的佈局管理器是JAppletBorderLay
31、out,而Applet默認(rèn)的佈局管理器是FlowLayout。 可直接向Applet視窗中添加元件,但JApplet不行,添加元件時(shí)必須添加到其內(nèi)容窗格中。得到內(nèi)容窗格使用方法: getContentPane();,常用組件,標(biāo)籤(JLabel) 它既可以顯示文本也可以顯示圖像 構(gòu)造函數(shù)如下: JLabel(Icon icon):icon表示使用的圖示 JLabel(String text,Icon icon,int align):text表示使用的字符串;icon表示使用的圖示;align表示水準(zhǔn)對(duì)齊方式,其值可以為:LEFT、RIGHT、CENTER。 其它常用方法 getText()
32、 setText(String text),常用組件,按鈕(JButton) 可以使用以下任一構(gòu)造函數(shù)來(lái)創(chuàng)建按鈕: JButton() :新建一個(gè)空的按鈕 JButton(Icon icon) JButton(String text) JButton(String text, Icon icon) JButton btnOk=new JButton(確定!); JButton btnCancel=new JButton(取消!); getContentPane.add(btnOk); getContentPane.add(btnCancel);,常用組件,文字方塊--JTextField JT
33、extField元件允許輸入或編輯單行文本 此類的構(gòu)造函數(shù)包括: JTextField() JTextField(Document doc, String text, int columns) JTextField(int columns) JTextField(String text) JTextField(String text, int columns),常用組件,JTextField tf = new JTextField(20); con.add(tf); 文字方塊--JPasswordField JPasswordField元件允許輸入或編輯單行文本,並且文本被其他字元代替。 此類
34、的構(gòu)造函數(shù)與單行文字方塊類似。 其它方法: char getPassword() char getEchoChar() void setEchoChar(char c),常用組件,文字方塊--JTextArea JTextArea元件用於接受來(lái)自使用者的多行文本 它可實(shí)現(xiàn)可滾動(dòng)介面 JTextArea元件可使用下列構(gòu)造函數(shù)創(chuàng)建: JTextArea() JTextArea(int rows, int cols),常用組件,核取方塊-JCheckBox 核取方塊用於為使用者提供一組選項(xiàng) JCheckBox類具有下列構(gòu)造函數(shù): JCheckBox() JCheckBox(Icon icon) JC
35、heckBox(Icon icon, boolean selected) JCheckBox(String text) JCheckBox(String text, boolean selected) JCheckBox(String text, Icon icon) JCheckBox(String text, Icon icon, boolean selected),常用組件,選項(xiàng)按鈕-JRadioButton 選項(xiàng)按鈕允許使用者從多個(gè)選項(xiàng)中選擇其中一個(gè) ButtonGroup用於在Swing中創(chuàng)建組 JRadioButton物件可使用下列構(gòu)造函數(shù)創(chuàng)建: JRadioButton() JR
36、adioButton(Icon icon) JRadioButton(Icon, boolean selected) JRadioButton(String text) JRadioButton(String text, boolean selected) JRadioButton(String text, Icon icon) JRadioButton(String text, Icon icon, boolean selected),常用組件,清單方塊-JList public JList() :使用空模型構(gòu)造JList public JList(ListModel dataModel):
37、構(gòu)造一個(gè)清單,用它顯示指定模型中的元素。 public JList (Object listData):構(gòu)造一個(gè)清單以顯示指定陣列l(wèi)istData的元素。 JList不支持滾動(dòng)。要啟用滾動(dòng),可使用下列代碼: JScrollPane myScrollPane=new JScrollPane(); myScrollPane.getViewport().setView(dataList);,常用組件,下拉式列示方塊-JComboBox 文本域和下拉清單的組合 在Swing中,下拉式列示方塊由JComboBox表示 構(gòu)造函數(shù)如下: public JComboBox() :此構(gòu)造函數(shù)使用缺省資料模型創(chuàng)建
38、JComboBox public JComboBox(ComboBoxModel asModel) :使用現(xiàn)有ComboBoxModel中的項(xiàng)目的下拉式列示方塊 public JComboBox (Object items) : 包含指定陣列元素的下拉式列示方塊,常用組件,菜單 功能表顯示專案清單,指明各種任務(wù)。 選擇或按一下某個(gè)選項(xiàng)時(shí)會(huì)打開(kāi)另一個(gè)清單或子功能表。 Swing功能表由功能表列、功能表和功能表項(xiàng)目構(gòu)成。 功能表列是所有菜單和功能表項(xiàng)目的根 JMenuBar是可通過(guò)JFrame、JWindow的根窗格添加至容器的組件。 由多個(gè)JMenu組成,每個(gè)JMenu在JMenubar中都表示
39、為字串。 JMenu在JMenuBar下以文本字串形式顯示,而在使用者按一下它時(shí),則以彈出式功能表顯示。 JMenuItem為JMenu中的一個(gè)元件,以文本字串形式顯示,可以具有圖示,外觀可以修改,如字體、顏色、背景、邊框等。 彈出式菜單JPopupMenu的定義和使用:,常用組件,對(duì)話方塊 1JOptionPane對(duì)話方塊 是強(qiáng)制回應(yīng)對(duì)話方塊,它提供了很多現(xiàn)成的對(duì)話方塊樣式,可以供使用者直接使用。 2JFileChooser對(duì)話方塊 提供了標(biāo)準(zhǔn)的檔的打開(kāi)、保存對(duì)話方塊。,佈局管理器,4、佈局管理器 Java中的佈局類型包括以下幾種: FlowLayout(流式佈局) BorderLayout
40、(邊界佈局) GridLayout(網(wǎng)格佈局) CardLayout(卡片佈局) GridBagLayout(網(wǎng)格包佈局),FlowLayout佈局管理器,FlowLayout的構(gòu)造函數(shù)有: FlowLayout():生成一個(gè)默認(rèn)的流式佈局 FlowLayout(int alignment):可以設(shè)定每一行元件的對(duì)齊方式 FlowLayout(int alignment,int horz,int vert):可以設(shè)定元件間的水準(zhǔn)和垂直距離 Applet和麵板的缺省佈局, 組件從左上角開(kāi)始按從左到右、從上到下的方式排列,BorderLayout佈局管理器,下麵是BorderLayout所定義的構(gòu)
41、造函數(shù): - BorderLayout():生成默認(rèn)的邊界佈局 - BorderLayout(int horz,int vert):可以設(shè)定元件間的水準(zhǔn)和垂直距離 窗口、框架和對(duì)話方塊等的缺省佈局 組件被置於容器的北、南、東、西或中間位置,GridLayout佈局管理器,GridLayout的構(gòu)造函數(shù)如下所示: - GridLayout():生成一個(gè)單列的網(wǎng)格佈局 - GridLayout(int row,int col):生成一個(gè)設(shè)定行數(shù)和列數(shù)的網(wǎng)格佈局 - GridLayout(int row,int col,int horz,int vert):可以設(shè)置元件之間的水準(zhǔn)和垂直間隔 用於將容
42、器區(qū)域劃分為一個(gè)矩形網(wǎng)格 組件按行和列排列,見(jiàn)後面計(jì)算器的佈局例,swing佈局管理器,1.BoxLayout佈局管理器 按照從上到下(即Y軸)或者從左到右(即X軸)的順序來(lái)依次排列元件。 2.ScrollPaneLayout佈局管理器 是JScrollPane中的內(nèi)置佈局管理器,所以不需要單獨(dú)創(chuàng)建,會(huì)自動(dòng)設(shè)置。,手動(dòng)佈局,在某些情況下,使用者不想使用佈局管理器,需要自己設(shè)置元件的位置和大小,這時(shí)應(yīng)取消容器的佈局管理器,然後再進(jìn)行設(shè)置,否則用戶自訂設(shè)置將會(huì)被佈局管理器覆蓋。取消佈局管理器的方法是: setLayout(null); 用戶使用setLocation()、setSize()、set
43、Bounds()等方法為元件設(shè)置位置和大小。需要注意的是,這種方法會(huì)導(dǎo)致程式與系統(tǒng)相關(guān),如不同的解析度會(huì)產(chǎn)生不同的效果。,5、事件處理模型,Java最新的事件處理方法是基於授權(quán)事件模型 當(dāng)事件來(lái)源物件因使用者的操作(滑鼠或鍵盤),系統(tǒng)會(huì)自動(dòng)觸發(fā)此事件類物件E,並通知所授權(quán)的事件監(jiān)聽(tīng)者A(若來(lái)源對(duì)象已向A註冊(cè)),事件監(jiān)聽(tīng)者A中有處理各種事件的方法(事件處理者1n)便會(huì)處理此事件E的各種狀況 。,事件處理方法,實(shí)現(xiàn)事件監(jiān)聽(tīng)器介面法: 首先給元件註冊(cè)監(jiān)聽(tīng)器,使用下列方法: addxxxListener(事件監(jiān)聽(tīng)器對(duì)象); 確定了事件監(jiān)聽(tīng)器的類型後,必須在程式中定義類來(lái)實(shí)現(xiàn)這些介面,重寫介面中的所有方
44、法。,事件適配器,使用實(shí)現(xiàn)事件監(jiān)聽(tīng)器介面的方法處理事件時(shí),必須重寫監(jiān)聽(tīng)器介面中的所有方法,儘管有些方法不會(huì)用到。 繼承事件適配器類,只需要重寫所需要的方法即可。,項(xiàng)目核心:只包括少數(shù)組件,import javax.swing.*; import java.awt.*; class P115 extends JFrame JLabel jLabel; P115() super(網(wǎng)上物流系統(tǒng)); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); jLabel= new JLabel(請(qǐng)選擇貨物出發(fā)地); getContentPa
45、ne().add(jLabel); pack(); public static void main(String args) P115 demo= new P115(); ,運(yùn)行結(jié)果,,功能擴(kuò)展:包括更多組件的GUI,按照創(chuàng)建元件,介面佈局,添加事件處理三個(gè)部分完成包括更多元件的GUI。 如下圖所示:,應(yīng)用升級(jí),為電梯類比遊戲創(chuàng)建介面,如下圖:,Java遊戲開(kāi)發(fā)(貪吃蛇、模擬電梯遊戲)學(xué)習(xí)情境4:塗鴉遊戲設(shè)計(jì),08遊戲3-2,目標(biāo)和任務(wù),目標(biāo):遊戲場(chǎng)景中圖形影像處理 任務(wù):塗鴉遊戲,用戶可選擇一種顏色, 用滑鼠在螢?zāi)簧想S意繪畫(huà),電梯類比遊戲的場(chǎng)景圖片載入,學(xué)習(xí)過(guò)程,項(xiàng)目核心:創(chuàng)建一個(gè)Appl
46、et容器 ,在其中繪圖 功能擴(kuò)展:使用者通過(guò)交互控制圖形繪製,圖像載入 應(yīng)用升級(jí):為“電梯模擬遊戲”載入樓層,電梯井等圖像,什麼是Applet,一個(gè)JavaApplet就是一個(gè)嵌入在另一個(gè)程式裡面運(yùn)行的應(yīng)用程式。就是說(shuō)Applet是不能單獨(dú)運(yùn)行的應(yīng)用程式。 Web的流覽器,appletview可以運(yùn)行Java的Applet。 Applet的內(nèi)容可以是文本,聲音,圖像。 Java有Application和Applet兩種程式。,Applet的生命週期,調(diào)用init()方法將Applet載入到容器 調(diào)用start()方法 調(diào)用paint()方法 調(diào)用stop()方法 調(diào)用destroy()從容器中
47、清除Applet,項(xiàng)目核心,創(chuàng)建一個(gè)可以在上面用滑鼠塗鴉的Applet程式,運(yùn)行情況如下: //核心案例,檔案名:Scribble.java,創(chuàng)建Applet繪圖容器,1通過(guò)繼承Applet類創(chuàng)建Applet繪圖容器 import java.applet.*; public class Scribble extends Applet //定義成員屬性 //在Applet的子類中覆蓋Applet類的init()方法 2 init()是java.applet.Applet類中的方法,當(dāng)applet程式首次被打開(kāi)時(shí),init()將第一個(gè)被自動(dòng)執(zhí)行。,添加滑鼠動(dòng)作監(jiān)聽(tīng),(1)由於要對(duì)Applet容器中
48、發(fā)生的滑鼠按下和滑鼠拖動(dòng)事件進(jìn)行繪圖回應(yīng),可以直接在 init()方法中添加語(yǔ)句: addMouseListener(this); addMouseMotionListener(this); (2)實(shí)現(xiàn)MouseListener和MouseMotionListener2個(gè)介面 public class Scribble extends Applet implements MouseListener, MouseMotionListener //需要將2個(gè)介面中的所有方法都實(shí)現(xiàn),哪怕有些方法不需要做什麼 ,滑鼠動(dòng)作監(jiān)聽(tīng)介面,鍵盤動(dòng)作監(jiān)聽(tīng)介面,功能擴(kuò)展1:增加顏色窗,在上面程式的基礎(chǔ)上要求
49、增加一個(gè)視窗,它包含顏色選項(xiàng)下拉清單和一個(gè)清除applet表單的按鈕用來(lái)選擇畫(huà)筆顏色和清除applet表單上的內(nèi)容。 運(yùn)行情況如下:,添加一個(gè)顏色選擇視窗,(1)創(chuàng)建一個(gè)createSidebar方法來(lái)生成含顏色選項(xiàng)下拉清單和一個(gè)清除applet表單的按鈕的輔助視窗。 private void createSidebar() //對(duì)於顏色陣列中的每一個(gè)ColorDescription , //提取其文本 //並將它加入選項(xiàng)清單 //創(chuàng)建clear window按鈕 //創(chuàng)建frame ,添加一個(gè)顏色選擇視窗,(2)實(shí)現(xiàn)ItemListener介面,對(duì)顏色選項(xiàng)下拉清單的顏色
50、選取進(jìn)行事件處理 public void itemStateChanged(ItemEvent e) (3)實(shí)現(xiàn)ActionListemer介面,對(duì)清除applet表單的按鈕進(jìn)行事件回應(yīng) public void actionPerformed(ActionEvent e) ,paint()方法,在Java中的awt包裡,Component類(構(gòu)件類)中定義了一個(gè)方法: paint(Graphics g) (1)參數(shù)g是一個(gè)圖形類(Graphics)物件,它由系統(tǒng)自動(dòng)生成,不需要使用者程式來(lái)產(chǎn)生實(shí)體。 (2)由參數(shù)g來(lái)調(diào)用Graphics類中的圖形處理方法
51、(3)paint()方法是自動(dòng)調(diào)用的,當(dāng)構(gòu)件首次顯示或顯示需要更新時(shí)調(diào)用。 (4)如果調(diào)用repaint()方法,將導(dǎo)致update()方法的自動(dòng)調(diào)用,update()的調(diào)用將首先用背景色清除畫(huà)面,然後調(diào)用paint()方法,Graphics類輸出圖形,在paint()方法中由g來(lái)調(diào)用: 1直線的輸出: public void paint(Graphics g) g.drawLine(50,60,100,120);g.drawLine(30,50,30,50); ,矩形的輸出,1無(wú)填充的矩形: drawRect(int x, int y, int width, int height) //x
52、,y為矩形左上角座標(biāo),width,height為矩形的寬和高 2有填充的矩形 fillRect(int x, int y, int width, int height) 3無(wú)填充的圓角矩形 drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) //arcWidth,arcHeight為圓角弧的橫向和縱向直徑 4有填充的圓角矩形 fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight
53、)draw3DRect(int x, int y, int width, int height, boolean raised) //raised:true/false 5有凸出/凹下的三D矩形 fill3DRect(int x, int y, int width, int height, boolean raised),畫(huà)出的六種矩形,橢圓的輸出,1無(wú)填充的橢圓 drawOval(int x, int y, int width, int height) 2無(wú)填充的橢圓 fillOval(int x, int y, int width, int height) //如果width和heig
54、ht的值相等,將畫(huà)出圓形 3畫(huà)弧 drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) //startAngle,弧開(kāi)始位置的角度 //arcAngle,弧轉(zhuǎn)過(guò)的角度:逆時(shí)鐘方向轉(zhuǎn)為正,順時(shí)鐘方向轉(zhuǎn)為負(fù),畫(huà)扇形,fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) 示例:public void paint(Graphics g) g.setColor(Color.blue);g.drawOval(20,2
55、0,60,60);g.fillOval(100,20,80,60);g.drawArc(200,20,100,60,35,65);g.drawArc(20,100,60,60,35,-140);g.fillArc(100,100,100,60,35,65);g.fillArc(200,100,60,60,35,-140); ,畫(huà)出的圓和弧,畫(huà)多邊形,1畫(huà)無(wú)填充多邊形 drawPolygon(int xPoints, int yPoints, int nPoints) 2畫(huà)有填充多邊形 fillPolygon(int xPoints, int yPoints, int nPoints) // n
56、Points:多邊形頂點(diǎn)的個(gè)數(shù);xPoints,yPoints 每個(gè)頂點(diǎn)的x,y座標(biāo)組drawPolygon(Polygon p) 3Polygon類的構(gòu)造方法 Polygon() Polygon(int xPoints, int yPoints, int nPoints) // Polygon類的方法 addPoint(int x, int y),與Polygon()結(jié)合使用可畫(huà)出任意個(gè)頂點(diǎn)的多邊形,改變繪圖顏色,Color類,可以通過(guò)Color類的對(duì)象來(lái)獲取顏色。 1構(gòu)造方法: Color(int r, int g, int b) //r,g,b 紅,綠,藍(lán)的色份:0 255之間取
57、值 Color(int rgb)//rgb:3原色的混合值 2.設(shè)置顏色的常用方法:,以圖形方式處理文本,1Font類,將文本作為圖形來(lái)處理以避免System.out.print()所產(chǎn)生的單調(diào)輸出。 2構(gòu)造方法: Font(String name, int style, int size) //name 字體, //styleFont.PLAIN,Font.BOLD,Font.ITALIC, size 字型大小 例如:Font f=new Font(“TimesRoman”, Font.BOLD + Font.ITALIC, 28); 3.Graphics類中的常用文本顯示方法: d
58、rawString(String str, int x, int y)//從(x, y)開(kāi)始顯示文本str drawChars(char data, int offset, int length, int x, int y) //以(x, y)開(kāi)始顯示data中從第offset個(gè)字元起始的length個(gè)字元,功能擴(kuò)展2:顯示圖像,(1)定義一個(gè)類ImagePanel,功能是可以在指定位置顯示指定圖片。 (2)類ImagePanel是一個(gè)JPanel子類,它能夠在指定的螢?zāi)晃恢蔑@示一個(gè)圖像。 (3)可以用ImagePanel物件表示模型中的靜止物件,如電梯和兩個(gè)樓層地板。,應(yīng)用升級(jí),問(wèn)題
59、陳述: 在電梯系統(tǒng)的類比程式裡,公司要求圖形化地顯示執(zhí)行過(guò)程,在適當(dāng)時(shí)刻,螢?zāi)粦?yīng)顯示一個(gè)人走向電梯,按下一個(gè)按鈕,然後進(jìn)入電梯,乘坐電梯,最後走出電梯。該圖形還應(yīng)顯示電梯的移動(dòng)、門的大開(kāi)、指示燈的開(kāi)和關(guān)、按下和重定按鈕式的亮暗變化。 希望獲得的介面如下:,電梯模擬遊戲場(chǎng)景圖,Java遊戲開(kāi)發(fā)(貪吃蛇、模擬電梯遊戲)學(xué)習(xí)情境5:音樂(lè)播放機(jī)設(shè)計(jì),08遊戲3-2,目標(biāo)與任務(wù),目標(biāo): 為遊戲添加音效,能夠用Java載入、播放遊戲中的音效檔,並按要求控制播放。 任務(wù): 用Java設(shè)計(jì)一個(gè)播放多種聲音的程式。為電梯類比遊戲添加背景音樂(lè)。,,,學(xué)習(xí)過(guò)程,項(xiàng)目核心,功能擴(kuò)展,應(yīng)用升級(jí),教師,學(xué)生,提供:
60、聲音播放案例,模仿完成: 聲音播放案例,提供: 多個(gè)聲音列表 播放關(guān)鍵代碼,協(xié)作完成: 多個(gè)聲音列表 播放,提供: 電梯遊戲的 聲音和介面,協(xié)作完成: 電梯遊戲的 音效處理,,,,,,,,,Java支援的音訊檔案格式,AU檔案格式 WAV檔案格式 AIFF檔案格式 MIDI檔案格式,音效檔有很多格式,AU音效檔,這是Java語(yǔ)言最早的聲音格式,副檔名為AU或SND,適用於短的音效檔。AU類型檔使用的三種典型音訊格式為:8位元單聲道採(cǎi)樣頻率為8KHz的-law類型、8位元線性類型以及16位元線性類型。,WAV音效檔,副檔名為WAV,由Microsoft和IBM共同開(kāi)發(fā),Windows9X系統(tǒng)都支
61、援此格式。,AIFF音效檔,副檔名為AIF或IEF,是Macintosh公司和SGI公司所共用的標(biāo)準(zhǔn)音頻檔案格式。,MIDI音效檔,副檔名為MID,是音樂(lè)製造業(yè)所認(rèn)可的標(biāo)準(zhǔn),主要用於控制諸如合成器和音效卡之類的設(shè)備。Java2平臺(tái)支援三種類型的MIDI檔公式,它們分別為MIDI檔案類型O、MIDI檔案類型1以及RMF。,與聲音處理有關(guān)的包和類,java.applet.Applet javax.sound.midi javax.sound.midi.spi javax.sound.sampled javax.sound.sampled.spi,,javax.sound.midi包,為I/O、序列
62、化和MIDI資料的合成提供介面和類。 javax.sound.midi.spi包,為新MIDI設(shè)備、MIDI檔閱讀器和編寫器等的實(shí)現(xiàn)提供介面。javax.sound.sampled包,為捕獲、處理和播放音訊資料提供介面和類。 javax.sound.sampled.spi包,為新音訊設(shè)備、音效檔閱讀器和編寫器或音訊格式轉(zhuǎn)換提供抽象類別。,與聲音處理有關(guān)的包和類,在Applet類播放聲音,使用play()方法裝載與播放聲音。格式如下:1、void play(URL url) 2、void play(URL url,String name) 一旦play()方法裝載了音效檔就立即播放。如果找不到,
63、play()方法不返回出錯(cuò)資訊,反應(yīng)到使用者端就是聽(tīng)不到聲音。 play()方法只播放一遍音效檔,重複播放聲音,如果需要重複播放某個(gè)音效檔,就需要使用AudioClip介面提供的方法。 AudioClip介面提供播放聲音片段的方法。 多個(gè)AudioClip項(xiàng)可以在同一時(shí)間播放,從而產(chǎn)生聲音混合的效果。,項(xiàng)目核心,一個(gè)基本的使用Applet類提供的方法播放音效檔的例子,運(yùn)行結(jié)果如圖所示:,步驟一:創(chuàng)建一個(gè)Applet小程式,(1)通過(guò)繼承Applet類來(lái)創(chuàng)建一個(gè)有三個(gè)按鈕的容器 import java.applet.*; public class mAudio extends Applet (2
64、)定義成員屬性 包含3個(gè)成員屬性,分別表示播放的聲音的URL相對(duì)位址,當(dāng)前播放的音訊流和聲音播放狀態(tài)。,步驟一:創(chuàng)建一個(gè)Applet小程式,(3)在Applet的子類中覆蓋Applet類的init()方法 init()是java.applet.Applet類中的方法,當(dāng)applet程式首次被打開(kāi)時(shí),會(huì)執(zhí)行此方法定義的程式碼。當(dāng)applet程式首次被打開(kāi)時(shí),init()將第一個(gè)被自動(dòng)執(zhí)行。 在其中調(diào)用getAudioClip來(lái)初始化當(dāng)前要播放的音訊流: audio=getAudioClip(new URL(getDocumentBase(),hurl));,步驟二:對(duì)Applet容器中的按鈕動(dòng)作
65、進(jìn)行事件處理,(1)為Applet容器添加按鈕動(dòng)作監(jiān)聽(tīng)器 由於要對(duì)Applet容器中發(fā)生的三種按鈕按下事件進(jìn)行分別回應(yīng),可以直接在 init()方法中對(duì)三個(gè)按鈕添加語(yǔ)句: addActionListener(this); (2)實(shí)現(xiàn)ActionListener介面 public class mAudio extends Applet implements ActionListener public void actionPerformed(ActionEvent e) ,步驟一:創(chuàng)建一個(gè)Applet小程式,這裡需要根據(jù)事件源即按鈕的不同作出分別動(dòng)作,可以通過(guò)e.getActionComma
66、nd()來(lái)判斷是哪個(gè)按鈕被按下。 AudioClip類中的play,stop,loop方法分別對(duì)應(yīng)播放、停止和迴圈播放功能。,功能擴(kuò)展,在上面程式的基礎(chǔ)上要求增加一套按鈕用於播放另一個(gè)音樂(lè),2個(gè)音樂(lè)可以同時(shí)播放,製造一種混音效果。運(yùn)行情況如下:,擴(kuò)展步驟一:增加一套按鈕,定義令一組成員屬性 包含新的3個(gè)成員屬性,分別表示播放的第二段聲音的URL相對(duì)位址,當(dāng)前播放的音訊流和聲音播放狀態(tài)。改寫init()方法 在其中調(diào)用getAudioClip來(lái)初始化另一個(gè)要播放的音訊流: Audio2=getAudioClip(new URL(getDocumentBase(),hurl2)); 並且添加一套新按鈕,重新佈局。,擴(kuò)展步驟二:對(duì)Applet容器中的按鈕重新進(jìn)行事件處理,為Applet容器中的新按鈕添加事件監(jiān)聽(tīng)器 由於要對(duì)Applet容器中發(fā)生的三種按鈕按下事件進(jìn)行分別回應(yīng),可以直接在 init()方法中對(duì)三個(gè)按鈕添加語(yǔ)句: addActionListener(this); (4)實(shí)現(xiàn)ActionListener介面,在actionPerformed方法中對(duì)六個(gè)事件源作出相應(yīng) public
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案