JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全.ppt

上传人:牧羊曲112 文档编号:5436116 上传时间:2023-07-06 格式:PPT 页数:209 大小:2.30MB
返回 下载 相关 举报
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全.ppt_第1页
第1页 / 共209页
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全.ppt_第2页
第2页 / 共209页
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全.ppt_第3页
第3页 / 共209页
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全.ppt_第4页
第4页 / 共209页
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全.ppt_第5页
第5页 / 共209页
点击查看更多>>
资源描述

《JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全.ppt》由会员分享,可在线阅读,更多相关《JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全.ppt(209页珍藏版)》请在三一办公上搜索。

1、JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏,Java遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境1:Java遊戲體驗,08遊戲3-2,目標和任務,目標:瞭解本課程的教學目的和教學內容瞭解 Java遊戲架構,Java運行機制,Java程式的開發流程,各種Java開發平臺掌握Java平臺的使用方法和技巧以小組為單位互相合作完成任務任務:在Java平臺運行貪吃蛇遊戲、電梯模擬遊戲,兩個真實的Java遊戲,本課程學完後要完成的兩個Java遊戲:(1)貪吃蛇遊戲(2)電梯模擬遊戲,學習過程,教師先介紹本課程的基本情況、學習內容和學習要求,然後演示一個已完成的遊戲程式,讓學生明確學習目標,產生學習興趣。

2、再介紹Java基本知識和平臺使用方法技巧。步驟一:瞭解課程的基本情況和學習內容步驟二:小組討論:手機裡有什麼常見的遊戲?(例如:貪吃蛇等)步驟三:觀看Java開發的遊戲(模擬電梯遊戲、貪吃蛇遊戲)步驟四:查看遊戲的原始程式碼,瞭解使用的編碼語言Java步驟五:學習Java語言的背景和相關基礎知識步驟六:學習Java平臺的安裝和使用方法步驟七:學生自己運行一個簡單遊戲的原始程式碼(例如:貪吃蛇)。步驟八:學生嘗試自己編寫一個簡單的Java程式,實踐指導,1、安裝並配置Java開發平臺:安裝Java 2SDK開發工具。設置環境變數:path=javac和java命令所在的目錄。classpath=

3、存放位元組碼檔的目錄。2、查看一個完整的Java遊戲原始程式碼,瞭解Java程式結構和特徵:(1)打開Java遊戲來源程式檔(2)觀察程式結構和特徵(注:Java遊戲來源程式由教師提供,教師可提供貪吃蛇遊戲的原始程式碼給學生觀摩),動手實踐,3、使用Java整合式開發環境調試運行Java程式編輯並保存java程式解釋java程式形成中間檔運行Java程式,得到結果,Java相關,一、1995年Java被正式發佈二、Java目前的主要應用許多大公司購買了Java的許可證。眾多軟體發展商開始支持Java軟體產品。物件導向的應用開發。Intranet(企業內部網)上的軟體發展。動態畫面的設計,包括圖

4、形圖像的調用。與各類資料庫連接查詢的SQL語句實現。其他應用類型的程式。,三、Java語言的特點,簡單性:它摒棄了C+中許多低級、困難、容易混淆、出錯或不經常使用的功能物件導向:程式=對象+消息。支持封裝、多態性和繼承。,三、Java語言的特點,可攜性:Java來源程式經過編譯器編譯,會被轉換成一種我們稱之為“位元組碼(bytecodes)”的目的程式。“位元組碼”的最大特點便是可以跨平臺運行,即程式設計人員們常說的“編寫一次,到處運行”,正是這一特性成為Java得以迅速普及的重要原因。解釋性:採用先經過編譯器編譯、再利用解譯器解釋的方式運行,三、Java語言的特點,高性能:用Java語言編輯

5、的來源程式的執行方法是採用先經過編譯器編譯、再利用解譯器解釋的方式來運行的。它綜合了解釋性語言與編譯語言的眾多優點,使其執行效率較以往的程式設計語言有了大幅度的提高。,三、Java語言的特點,併發性:Java的多執行緒機制使應用程式中的執行緒能夠併發執行,且其同步機制保證了對共用資料的正確操作。通過使用多執行緒,程式設計者可以分別用不同的執行緒完成特定的行為,而不需要採用全域的事件迴圈機制,這樣就很容易在網路上實現即時交互行為。豐富的API(Application ProgramInterface)文檔和類庫,程式師的開發工作可以在一個更高的層次上展開,這也正是Java受歡迎的重要原因之一。J

6、ava同時為用戶提供了詳盡的API文檔說明。,四、Java程式工作機制,Java程式的組成結構,五、Java應用程式(教師提供)Java程式的組成結構(1)至多有一個public類,檔案名必須與類名相同。(2)程式可以有一個或多個其它類。(3)當需要從某個類繼承或使用某個類及其方法時,使用import引入該類的定義。(4)Java程式組成結構 package/0個或1個,必須放在檔開始 import/0個或多個,必須放在所有類定義之前 public classDefinition/0個或1個,檔案名必須與類名相同 classDefinition/0個或多個 interface Definiti

7、on/0個或多個,六、Java開發平臺,(1)JDK+EditPlus(2)JDK+Jcreate(3)JDK+Eclipse,七、Java程式的開發及運行過程,Java遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境2:Java類設計,08遊戲3-2,目標和任務,目標:能根據需求設計和使用Java類,能理解MVC設計模式,能與小組其他成員協作完成任務,能使用API,教學案例,學習指引輔助學習任務:設計EnterDate.Java類,使用它可以創建、記錄、讀取特殊的日期,按電梯模擬遊戲的設計UML圖創建電梯模擬遊戲中的類。,學習過程,項目核心:模仿教師提供的一個核心案例,學習類的編寫方法功能擴展1:擴

8、展類,為類添加更多的屬性、方法、存取控制功能擴展2:使用已有的類應用升級:分析電梯模擬遊戲的類圖,模仿核心案例編寫電梯遊戲所需的類,物件導向程式設計概述,面向過程程式設計語言:C程式模組:函數,函數能完成一定的功能,有輸入和輸出.資料單獨存放.物件導向程式設計語言:C+,VB,Java程式模組:類(對象),類的屬性保存資料,類的方法完成功能,有輸入和輸出.,Java類,Java中所有的程式都由一個或多個類組成設計Java程式就是設計Java的類先有類,再創建類的對象,通過物件使用類類由屬性和方法構成.Java中的系統類和自訂類學習Java,先學會使用系統類完成一定的功能,再學習自己設計一些類.

9、,程式1-1,EnterDate類定義一個類,又叫聲明一個類,它有固定的書寫格式類聲明的格式.掌握屬性的聲明和方法的聲明,就掌握了類的聲明.注意類聲明時的一些規範.class extends implements,*類體,項目核心,供學生模仿,它具有完整的類格式,但只包含少數屬性和操作該屬性的方法/核心案例,檔案名:EnterDate.Java,public class EnterDate public int year;public void setYear(int newYear)if(newYear0)System.out.println(所給的年份參數不合理,設置操作被拒絕!);ret

10、urn;year=newYear;/end setYear(int newYear)方法/提供對屬性year進行讀取的方法public int getYear()return year;/測試上述屬性和方法能否正確使用public static void main(String args)EnterDate hubd;hubd=new EnterDate();hubd.setYear(1980);System.out.println(year=+hubd.getYear());,類的使用,2、類的使用先定義一個類再創建這個類的物件 類名 對象名=new類的構造方法;通過調用物件的屬性和方法來使

11、用這個物件,即使用類來完成一定的事(功能)對象名.屬性;對象名.方法;示例:使用核心案例EnterDate類。核心案例就是EnterDate類的定義(2)EnterDate hubd=new EnterDate();(3)hubd.setYear(1980);,EnterDate.Java類的測試,類testEnterDate在另一個新類testEnterDate中使用EnterDate,如下所示,/public class testEnterDate public static void main(String args)EnterDate hubd,humm;hubd=new EnterD

12、ate();humm=new EnterDate(182,45,69);hubd.setYear(1980);hubd.setMonth(8);hubd.setDay(28);,測試EnterDate中方法與屬性的結果:,構造器,構造器又叫構造方法,構造函數。構造方法是Java類中一種特殊的方法。它體現在:(1)構造方法的方法名必須與類名完全相同。(2)一個類可以定義多個構造方法,這叫構造方法的重載。(3)沒有參數的構造方法叫默認構造方法,有參數的叫非默認構造方法。(4)一個類如果一個構造方法都沒有定義,則它繼承父類的構造方法。(5)當一個類中定義了非默認的構造方法後,默認的構造方法就失效了,

13、除非再定一個默認構造方法的定義。,信息隱藏和封裝,屬性和方法可以沒有修飾符,有public修飾符、有private修飾符,有protected修飾符。屬性和方法修飾符不同,可以控制它們被訪問的範圍。用private修飾不想被其它類訪問的屬性和方法,以達到資訊隱藏的目的。用public修飾哪些不想隱藏的屬性和方法,以達到可以被子類繼承或被別的類訪問的目的。,使用繼承創建類,Java用extends實現繼承,快速創建類Java支持單繼承,一個子類只能有一個父類子類繼承父類的屬性和方法在Java程式設計中應該多使用繼承 class extends implements,*類體,功能擴展:使用繼承,定

14、義一個person類作為父類,代碼如下:class Person private String name;private int age;public Person(String name,int age)this.name=name;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

15、.name=name;public void setAge(int age)this.age=age;public String getInfo()return name:+name+nage:+age;/end class Person,功能擴展:使用繼承,Student先繼承Person,後重載Person中的方法從上面的Person類繼承一個子類Student類,並在子類中重載父類Person中的方法class Student extends Person private String school;/增加新屬性 public Student(String name,int age,St

16、ring school)super(name,age);this.school=school;public Student(String name,String school)super(name);this.school=school;public Student(String school)this.school=school;/重載構造方法 public Student()school=;public String getSchool()return school;/增加新的方法 public void setSchool()this.school=school;/增加新的方法 publ

17、ic String getInfo()return super.getInfo()+nschool:+school;/重載,功能擴展:使用繼承,設計一個類使用Person,Studentpublic 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

18、=new Student(王五,23,szpt);System.out.println(s.getInfo();,方法重載,一個類多個同名的方法叫重載重載不同重寫普通方法與構造方法都可以重載普通方法重載規則:重載方法的參數列表必須和被重載的方法不同。重載方法的返回類型可以和被重載的方法不同,但僅此還不夠。重載方法可以改變存取控制級別,構造器的重載,構造器也可以重載用this調用自己的構造方法用super調用父類的構造方法this和super不能同時出現this和super只能出現在第一行如果你類中沒有顯式的默認構造器,不能用super()。,方法覆蓋,子類可以重寫父類中同名的方法重寫也稱為覆蓋

19、重寫時注意:方法名必須與被重寫的方法一樣參數列表必須與被重寫的方法一樣返回類型必須與被重寫的方法一樣存取控制級別不能比被重寫的方法更嚴格,由覆蓋和重載產生的多態性,物件導向三大特徵:封裝、繼承、多態多態:編譯時多態運行時多態多態參數,Static和final,static用static修飾的成份叫靜態成份,如靜態屬性、靜態方法、靜態類。static可以修飾屬性和方法,內部類,不能用來修飾一般的類。用static修飾的屬性成為全域變數,所有類的實例共用一個靜態屬性。用static修飾的方法不能在子類中重寫,Static和final,靜態成員沒有this。訪問靜態成員,可不用創建物件,直接用類名訪

20、問。在類的方法的外部,可以定義靜態塊static 靜態塊常用於進行靜態屬性的初始化。靜態塊的產生,源於任何的動作陳述式必須屬於某個方法這個規定。final可以使用final來修飾類,屬性,方法。一個類用final修飾,則它不可以被繼承。一個屬性用final修飾,則它將成為一個常量。一個方法用final修飾,則它不能被重寫。,抽象類別,抽象方法就是不完整的方法,方法體為空。類中有抽象方法,則類必須為抽象類別用abstract修飾的類叫抽象類別如果子類沒有實現父類中的抽象方法,則子類必須也為抽象類別。一個類不能同時用abstract和final修飾。,介面,當一個類中所有的方法都是抽象方法時,Ja

21、va將它定義為介面。interface 和繼承父類相似,類可以實現介面。class extends implements,*類體,抽象類別和介面的多態性,抽象類別和介面都支援多態性它們和類的多態性相似。,內部類,就是在一個類的 中間再定義一個類,class A class B 編譯後产生A.class和A$B.class兩個類文件內部類的使用創建了內部類之後,可以在的內部或外部使用它注意:內部類的名稱不能和它的外部類相同內部類可以申明為abstract,並可以被其它內部類繼承。內部類可以申明為final的。內部類可以申明为private或protected非static的內部類不能申明除常量之

22、外的靜態成員。定義在外部類方法體中的內部類稱為本地方法內部類,可以訪問外部類的其它成員,但不能訪問所在方法的區域變數。還有一種特殊的內部類,static內部類。,Java檔的組織,Java中用包來組織使用者的原始檔案一個Java包可以認為是硬碟上的一個資料夾.Java用package包名;來創建一個包.同一個包中的類可以互相訪問.要訪問不同包中的類,用import包名;導入要訪問的某包.,包應用示例,如圖所示組織Java的文件將PA1放入package1包中,將PA2放入package2包中,PA2調用PA1,testPA12調用PA1和PA2.,包應用示例,/關於包涉及PA1,PA2,tes

23、tPA12三個Java原始檔案/目錄結構d:testpackage1;d:testpackage2/classpath=.;d:test/來源程式PA1,PA2,testPA12等隨便放入一個目錄如d:testsrc/先進入dos,進入d:testsrc目錄/用命令列編譯PA1.Java,命令格式Javac-d d:test PA1.Java/用命令列编译PA2.Java,命令格式Javac-d d:test PA2.Java/行成一個package1包,包中有一個檔PA1.class,/行成一個package2包,包中有一個檔PA2.class/再進入d:testsrc目錄/編譯並運行tes

24、tPA12/testPA12,能正常說明包的運行正確/注意*標明的語句,包應用示例,package package1;/*將PA1放入package1包中public class PA1 package package2;/*,將PA2放入與PA1不同的package2包中import package1.PA1;/*因為PA1,PA2不同包,PA2想使用PA1必須先導入import package1.PA1;/*import package2.PA2;/*,應用升級:按照設計說明書的類圖編寫類,問題陳述:某公司打算建造一幢兩層的辦公樓,並為它裝一部電梯。公司要求開發一個物件導向的類比程式,對電

25、梯的運作進行建模,在電梯系統的類比程式裡,公司要求圖形化地顯示執行過程,在適當時刻,螢幕應顯示一個人走向電梯,按下一個按鈕,然後進入電梯,乘坐電梯,最後走出電梯。該圖形還應顯示電梯的移動、門的大開、指示燈的開和關、按下和重定按鈕式的亮暗變化。,應用升級:電梯遊戲系統包含的類,應用升級:實現Elevator類,對於Elevator類的private屬性moving、summoned、currentFloor、capacity、和traveTime,他們的聲明代碼為:public class Elevator/attributes private boolean moving;private bo

26、olean summoned;private int currentFloor=1;private int destinationFloor=2;private int capacity=1;private int travelTime=5;/constructor public Elevator(),Java遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境3:圖形化使用者介面設計,08遊戲3-2,目標和任務,目標:為遊戲添加使用者介面,使用者交互任務:網上物流系統介面設計,電梯類比遊戲介面設計,學習過程,開始,圖形化使用者介面(GUI)設計,學習內容:GUI概述容器有容器佈局事件處理概述事件模型事件

27、適配器常用swing組件,項目:設計一個系統介面如下:,項目分析,可將專案分成三個模組實現:,所有的GUI都可分成以上三個模組實現,GUI包,java.awt包,是使用Java進行GUI設計的基礎。javax.swing包,幾乎所有AWT組件對應有新功能更強的Swing組件。另外還加入了一些全新的元件。Swing元件在名稱上前面多了一個字母“J”2、GUI的創建步驟(1)引用需要的包和類。(2)設置一個頂層的容器。(3)根據需要為容器設置佈局管理器或使用默認佈局管理器。(4)將組件添加到容器內,位置自行設計。(5)為回應事件的組件編寫事件處理代碼。,容器、組件、佈局和觀感,1容器和組件元件是可

28、以用圖形化的方式顯示在螢幕上並能夠與使用者進行交互的物件。容器是一種特殊的元件,一種能夠容納其他元件或容器的元件。2.佈局管理器為了使圖形化使用者介面具有良好的平臺無關性,提供了專門用來管理元件在容器中的佈局的工具。3.觀感 決定swing應用程式的外觀。,常用容器,容器是放置其他Swing組件的頂級容器JFrame組件用於在Swing程式中創建表單它的構造函數:JFrame()JFrame(String Title)元件必須添加至內容窗格,而不是直接添加至JFrame對象,示例:frame.getContentPane().add(b);,JPanel組件,用於將小型的羽量級元件組合在一起J

29、Panel的缺省佈局為FlowLayoutJPanel具有下列構造函數:JPanel()JPanel(LayoutManager lm)JApplet也是一種視窗容器,繼承自Applet類,Applet小程式是另一種Java程式,與Applet不同的是,它默認的佈局管理器是JAppletBorderLayout,而Applet默認的佈局管理器是FlowLayout。可直接向Applet視窗中添加元件,但JApplet不行,添加元件時必須添加到其內容窗格中。得到內容窗格使用方法:getContentPane();,常用組件,標籤(JLabel)它既可以顯示文本也可以顯示圖像構造函數如下:JLab

30、el(Icon icon):icon表示使用的圖示JLabel(String text,Icon icon,int align):text表示使用的字符串;icon表示使用的圖示;align表示水準對齊方式,其值可以為:LEFT、RIGHT、CENTER。其它常用方法 getText()setText(String text),常用組件,按鈕(JButton)可以使用以下任一構造函數來創建按鈕:JButton():新建一個空的按鈕JButton(Icon icon)JButton(String text)JButton(String text,Icon icon)JButton btnOk=n

31、ew JButton(確定!);JButton btnCancel=new JButton(取消!);getContentPane.add(btnOk);getContentPane.add(btnCancel);,常用組件,文字方塊-JTextFieldJTextField元件允許輸入或編輯單行文本此類的構造函數包括:JTextField()JTextField(Document doc,String text,int columns)JTextField(int columns)JTextField(String text)JTextField(String text,int column

32、s),常用組件,JTextField tf=new JTextField(20);con.add(tf);文字方塊-JPasswordFieldJPasswordField元件允許輸入或編輯單行文本,並且文本被其他字元代替。此類的構造函數與單行文字方塊類似。其它方法:char getPassword()char getEchoChar()void setEchoChar(char c),常用組件,文字方塊-JTextAreaJTextArea元件用於接受來自使用者的多行文本它可實現可滾動介面JTextArea元件可使用下列構造函數創建:JTextArea()JTextArea(int rows

33、,int cols),常用組件,核取方塊-JCheckBox核取方塊用於為使用者提供一組選項JCheckBox類具有下列構造函數:JCheckBox()JCheckBox(Icon icon)JCheckBox(Icon icon,boolean selected)JCheckBox(String text)JCheckBox(String text,boolean selected)JCheckBox(String text,Icon icon)JCheckBox(String text,Icon icon,boolean selected),常用組件,選項按鈕-JRadioButton選項

34、按鈕允許使用者從多個選項中選擇其中一個ButtonGroup用於在Swing中創建組JRadioButton物件可使用下列構造函數創建:JRadioButton()JRadioButton(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),常用組件,

35、清單方塊-JListpublic JList():使用空模型構造JListpublic JList(ListModel dataModel):構造一個清單,用它顯示指定模型中的元素。public JList(Object listData):構造一個清單以顯示指定陣列listData的元素。JList不支持滾動。要啟用滾動,可使用下列代碼:JScrollPane myScrollPane=new JScrollPane();myScrollPane.getViewport().setView(dataList);,常用組件,下拉式列示方塊-JComboBox文本域和下拉清單的組合在Swing中

36、,下拉式列示方塊由JComboBox表示構造函數如下:public JComboBox():此構造函數使用缺省資料模型創建JComboBoxpublic JComboBox(ComboBoxModel asModel):使用現有ComboBoxModel中的項目的下拉式列示方塊public JComboBox(Object items):包含指定陣列元素的下拉式列示方塊,常用組件,菜單功能表顯示專案清單,指明各種任務。選擇或按一下某個選項時會打開另一個清單或子功能表。Swing功能表由功能表列、功能表和功能表項目構成。功能表列是所有菜單和功能表項目的根JMenuBar是可通過JFrame、JW

37、indow的根窗格添加至容器的組件。由多個JMenu組成,每個JMenu在JMenubar中都表示為字串。JMenu在JMenuBar下以文本字串形式顯示,而在使用者按一下它時,則以彈出式功能表顯示。JMenuItem為JMenu中的一個元件,以文本字串形式顯示,可以具有圖示,外觀可以修改,如字體、顏色、背景、邊框等。彈出式菜單JPopupMenu的定義和使用:,常用組件,對話方塊1JOptionPane對話方塊 是強制回應對話方塊,它提供了很多現成的對話方塊樣式,可以供使用者直接使用。2JFileChooser對話方塊 提供了標準的檔的打開、保存對話方塊。,佈局管理器,4、佈局管理器Java

38、中的佈局類型包括以下幾種:FlowLayout(流式佈局)BorderLayout(邊界佈局)GridLayout(網格佈局)CardLayout(卡片佈局)GridBagLayout(網格包佈局),FlowLayout佈局管理器,FlowLayout的構造函數有:FlowLayout():生成一個默認的流式佈局FlowLayout(int alignment):可以設定每一行元件的對齊方式FlowLayout(int alignment,int horz,int vert):可以設定元件間的水準和垂直距離 Applet和麵板的缺省佈局,組件從左上角開始按從左到右、從上到下的方式排列,Bord

39、erLayout佈局管理器,下麵是BorderLayout所定義的構造函數:-BorderLayout():生成默認的邊界佈局-BorderLayout(int horz,int vert):可以設定元件間的水準和垂直距離窗口、框架和對話方塊等的缺省佈局組件被置於容器的北、南、東、西或中間位置,GridLayout佈局管理器,GridLayout的構造函數如下所示:-GridLayout():生成一個單列的網格佈局-GridLayout(int row,int col):生成一個設定行數和列數的網格佈局-GridLayout(int row,int col,int horz,int vert)

40、:可以設置元件之間的水準和垂直間隔用於將容器區域劃分為一個矩形網格組件按行和列排列,見後面計算器的佈局例,swing佈局管理器,1.BoxLayout佈局管理器 按照從上到下(即Y軸)或者從左到右(即X軸)的順序來依次排列元件。2.ScrollPaneLayout佈局管理器是JScrollPane中的內置佈局管理器,所以不需要單獨創建,會自動設置。,手動佈局,在某些情況下,使用者不想使用佈局管理器,需要自己設置元件的位置和大小,這時應取消容器的佈局管理器,然後再進行設置,否則用戶自訂設置將會被佈局管理器覆蓋。取消佈局管理器的方法是:setLayout(null);用戶使用setLocation

41、()、setSize()、setBounds()等方法為元件設置位置和大小。需要注意的是,這種方法會導致程式與系統相關,如不同的解析度會產生不同的效果。,5、事件處理模型,Java最新的事件處理方法是基於授權事件模型 當事件來源物件因使用者的操作(滑鼠或鍵盤),系統會自動觸發此事件類物件E,並通知所授權的事件監聽者A(若來源對象已向A註冊),事件監聽者A中有處理各種事件的方法(事件處理者1n)便會處理此事件E的各種狀況。,事件處理方法,實現事件監聽器介面法:首先給元件註冊監聽器,使用下列方法:addxxxListener(事件監聽器对象);確定了事件監聽器的類型後,必須在程式中定義類來實現這些

42、介面,重寫介面中的所有方法。,事件適配器,使用實現事件監聽器介面的方法處理事件時,必須重寫監聽器介面中的所有方法,儘管有些方法不會用到。繼承事件適配器類,只需要重寫所需要的方法即可。,項目核心:只包括少數組件,import javax.swing.*;import java.awt.*;class P115 extends JFrame JLabel jLabel;P115()super(網上物流系統);setDefaultCloseOperation(EXIT_ON_CLOSE);setVisible(true);jLabel=new JLabel(請選擇貨物出發地);getContentP

43、ane().add(jLabel);pack();public static void main(String args)P115 demo=new P115();,運行結果,功能擴展:包括更多組件的GUI,按照創建元件,介面佈局,添加事件處理三個部分完成包括更多元件的GUI。如下圖所示:,應用升級,為電梯類比遊戲創建介面,如下圖:,Java遊戲開發(貪吃蛇、模擬電梯遊戲)學習情境4:塗鴉遊戲設計,08遊戲3-2,目標和任務,目標:遊戲場景中圖形影像處理任務:塗鴉遊戲,用戶可選擇一種顏色,用滑鼠在螢幕上隨意繪畫,電梯類比遊戲的場景圖片載入,學習過程,項目核心:創建一個Applet容器,在其中繪

44、圖功能擴展:使用者通過交互控制圖形繪製,圖像載入應用升級:為“電梯模擬遊戲”載入樓層,電梯井等圖像,什麼是Applet,一个JavaApplet就是一個嵌入在另一個程式裡面運行的應用程式。就是說Applet是不能單獨運行的應用程式。Web的流覽器,appletview可以運行Java的Applet。Applet的內容可以是文本,聲音,圖像。Java有Application和Applet兩種程式。,Applet的生命週期,調用init()方法將Applet載入到容器調用start()方法調用paint()方法調用stop()方法調用destroy()從容器中清除Applet,項目核心,創建一個可

45、以在上面用滑鼠塗鴉的Applet程式,運行情況如下:/核心案例,檔案名:Scribble.java,創建Applet繪圖容器,1通過繼承Applet類創建Applet繪圖容器import java.applet.*;public class Scribble extends Applet/定義成員屬性/在Applet的子類中覆蓋Applet類的init()方法2 init()是類中的方法,當applet程式首次被打開時,init()將第一個被自動執行。,添加滑鼠動作監聽,(1)由於要對Applet容器中發生的滑鼠按下和滑鼠拖動事件進行繪圖回應,可以直接在 init()方法中添加語句:addMo

46、useListener(this);addMouseMotionListener(this);(2)實現MouseListener和MouseMotionListener2個介面public class Scribble extends Applet implements MouseListener,MouseMotionListener/需要將2個介面中的所有方法都實現,哪怕有些方法不需要做什麼,滑鼠動作監聽介面,鍵盤動作監聽介面,功能扩展1:增加顏色窗,在上面程式的基礎上要求增加一個視窗,它包含顏色選項下拉清單和一個清除applet表單的按鈕用來選擇畫筆顏色和清除applet表單上的內容。

47、運行情況如下:,添加一個顏色選擇視窗,(1)創建一個createSidebar方法來生成含顏色選項下拉清單和一個清除applet表單的按鈕的輔助視窗。private void createSidebar()/對於顏色陣列中的每一個ColorDescription,/提取其文本/並將它加入選項清單/創建clear window按鈕/創建frame,添加一個顏色選擇視窗,(2)實現ItemListener介面,對顏色選項下拉清單的顏色選取進行事件處理public void itemStateChanged(ItemEvent e)(3)實現ActionListemer介面,對清除applet表單的

48、按鈕進行事件回應public void actionPerformed(ActionEvent e),paint()方法,在Java中的awt包裡,Component類(構件類)中定義了一個方法:paint(Graphics g)(1)參數g是一個圖形類(Graphics)物件,它由系統自動生成,不需要使用者程式來產生實體。(2)由參數g來調用Graphics類中的圖形處理方法(3)paint()方法是自動調用的,當構件首次顯示或顯示需要更新時調用。(4)如果調用repaint()方法,將導致update()方法的自動調用,update()的調用將首先用背景色清除畫面,然後調用paint()方

49、法,Graphics類輸出圖形,在paint()方法中由g來調用:1直線的輸出:public void paint(Graphics g)g.drawLine(50,60,100,120);g.drawLine(30,50,30,50);,矩形的輸出,1無填充的矩形:drawRect(int x,int y,int width,int height)/x,y為矩形左上角座標,width,height為矩形的寬和高2有填充的矩形 fillRect(int x,int y,int width,int height)3無填充的圓角矩形 drawRoundRect(int x,int y,int wi

50、dth,int height,int arcWidth,int arcHeight)/arcWidth,arcHeight為圓角弧的橫向和縱向直徑4有填充的圓角矩形 fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)draw3DRect(int x,int y,int width,int height,boolean raised)/raised:true/false5有凸出/凹下的三D矩形 fill3DRect(int x,int y,int width,int height,boolean r

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号