收藏 分销(赏)

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

上传人:pc****0 文档编号:13366838 上传时间:2026-03-09 格式:PPT 页数:209 大小:3.52MB 下载积分:10 金币
下载 相关 举报
JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全.ppt_第1页
第1页 / 共209页
JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全.ppt_第2页
第2页 / 共209页


点击查看更多>>
资源描述
,按一下此處編輯母版標題樣式,按一下此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,JAVA,游戏开发,从零开始开发贪吃蛇、电梯模拟游戏,Java,遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境,1,:,Java,遊戲體驗,08,遊戲,3-2,目標和任務,目標:,瞭解本課程的教學目的和教學內容,瞭解,Java,遊戲架構,,Java,運行機制,,Java,程式的開發流程,各種,Java,開發平臺,掌握,Java,平臺的使用方法和技巧,以小組為單位互相合作完成任務,任務:,在,Java,平臺運行貪吃蛇遊戲、電梯模擬遊戲,兩個真實的,Java,遊戲,本課程學完後要完成的兩個,Java,遊戲:,(,1,)貪吃蛇遊戲 (,2,)電梯模擬遊戲,學習過程,教師先介紹本課程的基本情況、學習內容和學習要求,然後演示一個已完成的遊戲程式,讓學生明確學習目標,產生學習興趣。再介紹,Java,基本知識和平臺使用方法技巧。,步驟一:瞭解課程的基本情況和學習內容,步驟二:小組討論:手機裡有什麼常見的遊戲?(例如:貪吃蛇等),步驟三:觀看,Java,開發的遊戲(模擬電梯遊戲、貪吃蛇遊戲),步驟四:查看遊戲的原始程式碼,瞭解使用的編碼語言,Java,步驟五:學習,Java,語言的背景和相關基礎知識,步驟六:學習,Java,平臺的安裝和使用方法,步驟七:學生自己運行一個簡單遊戲的原始程式碼(例如:貪吃蛇)。,步驟八:學生嘗試自己編寫一個簡單的,Java,程式,實踐指導,1,、安裝並配置,Java,開發平臺,:,安裝,Java 2SDK,開發工具。,設置環境變數:,path=javac,和,java,命令所在的目錄。,classpath=,存放位元組碼檔的目錄。,2,、查看一個完整的,Java,遊戲原始程式碼,瞭解,Java,程式結構和特徵:,(,1,)打開,Java,遊戲來源程式檔,(,2,)觀察程式結構和特徵,(注:,Java,遊戲來源程式由教師提供,教師可提供貪吃蛇遊戲的原始程式碼給學生觀摩),動手實踐,3,、使用,Java,整合式開發環境調試運行,Java,程式,編輯並保存,java,程式,解釋,java,程式形成中間檔,運行,Java,程式,得到結果,Java,相關,一、,1995,年,Java,被正式發佈,二、,Java,目前的主要應用,許多大公司購買了,Java,的許可證。,眾多軟體發展商開始支持,Java,軟體產品。,物件導向的應用開發。,Intranet(,企業內部網,),上的軟體發展。,動態畫面的設計,包括圖形圖像的調用。,與各類資料庫連接查詢的,SQL,語句實現。,其他應用類型的程式。,三、,Java,語言的特點,簡單性:,它摒棄了,C+,中許多低級、困難、容易混淆、出錯或不經常使用的功能,物件導向:程式,=,對象,+,消息。支持封裝、多態性和繼承。,三、,Java,語言的特點,可攜性:,Java,來源程式經過編譯器編譯,會被轉換成一種我們稱之為,“,位元組碼(,bytecodes,),”,的目的程式。,“,位元組碼,”,的最大特點便是可以跨平臺運行,即程式設計人員們常說的,“,編寫一次,到處運行,”,,正是這一特性成為,Java,得以迅速普及的重要原因。解釋性:採用先經過編譯器編譯、再利用解譯器解釋的方式運行,三、,Java,語言的特點,高性能:,用,Java,語言編輯的來源程式的執行方法是採用先經過編譯器編譯、再利用解譯器解釋的方式來運行的。它綜合了解釋性語言與編譯語言的眾多優點,使其執行效率較以往的程式設計語言有了大幅度的提高。,三、,Java,語言的特點,併發性:,Java,的多執行緒機制使應用程式中的執行緒能夠併發執行,且其同步機制保證了對共用資料的正確操作。通過使用多執行緒,程式設計者可以分別用不同的執行緒完成特定的行為,而不需要採用全域的事件迴圈機制,這樣就很容易在網路上實現即時交互行為。,豐富的,API,(,Application ProgramInterface,)文檔和類庫,程式師的開發工作可以在一個更高的層次上展開,這也正是,Java,受歡迎的重要原因之一。,Java,同時為用戶提供了詳盡的,API,文檔說明。,四、,Java,程式工作機制,Java,程式的組成結構,五、,Java,應用程式(教師提供),Java,程式的組成結構,(,1,)至多有一個,public,類,檔案名必須與類名相同。,(,2,)程式可以有一個或多個其它類。,(,3,)當需要從某個類繼承或使用某個類及其方法時,使用,import,引入該類的定義。,(,4,),Java,程式組成結構,package/0,個或,1,個,必須放在檔開始,import/0,個或多個,必須放在所有類定義之前,public classDefinition/0,個或,1,個,檔案名必須與類名相同,classDefinition /0,個或多個,interface Definition /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,:擴展類,為類添加更多的屬性、方法、存取控制,功能擴展,2,:使用已有的類,應用升級:分析電梯模擬遊戲的類圖,模仿核心案例編寫電梯遊戲所需的類,物件導向程式設計概述,面向過程,程式設計語言,:C,程式模組,:,函數,函數能完成一定的功能,有輸入和輸出,.,資料單獨存放,.,物件導向,程式設計語言,:C+,VB,Java,程式模組,:,類,(,對象,),類的屬性保存資料,類的方法完成功能,有輸入和輸出,.,Java,類,Java,中所有的程式都由一個或多個類組成,設計,Java,程式就是設計,Java,的類,先有類,再創建類的對象,通過物件使用類,類由屬性和方法構成,.,Java,中的系統類和自訂類,學習,Java,先學會使用系統類完成一定的功能,再學習自己設計一些類,.,程式,1-1,EnterDate,類,定義一個類,又叫聲明一個類,它有固定的書寫格式類聲明的格式,.,掌握屬性的聲明和方法的聲明,就掌握了類的聲明,.,注意類聲明時的一些規範,.,class extends,implements,*,類體,類的聲明,屬性聲明,方法聲明,項目核心,供學生模仿,它具有完整的類格式,但只包含少數屬性和操作該屬性的方法,/,核心案例,檔案名:,EnterDate.Java,,,public class EnterDate,public int year;,public void setYear(int newYear),if(newYear0),System.out.println(,所給的年份參數不合理,設置操作被拒絕!,);,return;,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,類的構造方法;,通過調用物件的屬性和方法來使用這個物件,即使用類來完成一定的事,(,功能,),對象名,.,屬性;,對象名,.,方法;,示例:使用核心案例,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 EnterDate();,humm=new EnterDate(182,45,69);,hubd.setYear(1980);,hubd.setMonth(8);,hubd.setDay(28);,測試,EnterDate,中方法與屬性的結果:,構造器,構造器又叫構造方法,構造函數。構造方法是,Java,類中一種特殊的方法。它體現在:,(,1,)構造方法的方法名必須與類名完全相同。,(,2,)一個類可以定義多個構造方法,這叫構造方法的重載。,(,3,)沒有參數的構造方法叫默認構造方法,有參數的叫非默認構造方法。,(,4,)一個類如果一個構造方法都沒有定義,則它繼承父類的構造方法。,(,5,)當一個類中定義了非默認的構造方法後,默認的構造方法就失效了,除非再定一個默認構造方法的定義。,信息隱藏和封裝,屬性和方法可以沒有修飾符,有,public,修飾符、有,private,修飾符,有,protected,修飾符。屬性和方法修飾符不同,可以控制它們被訪問的範圍。,用,private,修飾不想被其它類訪問的屬性和方法,以達到資訊隱藏的目的。,用,public,修飾哪些不想隱藏的屬性和方法,以達到可以被子類繼承或被別的類訪問的目的。,使用繼承創建類,Java,用,extends,實現繼承,快速創建類,Java,支持單繼承,一個子類只能有一個父類,子類繼承父類的屬性和方法,在,Java,程式設計中應該多使用繼承,class extends implements,*,類體,功能擴展:使用繼承,定義一個,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.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,String 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;/,增加新的方法,public String getInfo()return super.getInfo()+nschool:+school;/,重載,功能擴展:使用繼承,設計一個類使用,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.println(s.getInfo();,方法重載,一個類多個同名的方法叫重載,重載不同重寫,普通方法與構造方法都可以重載,普通方法重載規則:,重載方法的參數列表必須和被重載的方法不同。,重載方法的返回類型可以和被重載的方法不同,但僅此還不夠。,重載方法可以改變存取控制級別,構造器的重載,構造器也可以重載,用,this,調用自己的構造方法,用,super,調用父類的構造方法,this,和,super,不能同時出現,this,和,super,只能出現在第一行,如果你類中沒有顯式的默認構造器,不能用,super(),。,方法覆蓋,子類可以重寫父類中同名的方法,重寫也稱為覆蓋,重寫時注意:,方法名必須與被重寫的方法一樣,參數列表必須與被重寫的方法一樣,返回類型必須與被重寫的方法一樣,存取控制級別不能比被重寫的方法更嚴格,由覆蓋和重載產生的多態性,物件導向三大特徵:,封裝、繼承、多態,多態:,編譯時多態,運行時多態,多態參數,Static,和,final,static,用,static,修飾的成份叫靜態成份,如靜態屬性、靜態方法、靜態類。,static,可以修飾屬性和方法,內部類,不能用來修飾一般的類。,用,static,修飾的屬性成為全域變數,所有類的實例共用一個靜態屬性。,用,static,修飾的方法不能在子類中重寫,Static,和,final,靜態成員沒有,this,。,訪問靜態成員,可不用創建物件,直接用類名訪問。,在類的方法的外部,可以定義靜態塊,static ,靜態塊常用於進行靜態屬性的初始化。,靜態塊的產生,源於任何的動作陳述式必須屬於某個方法這個規定。,final,可以使用,final,來修飾類,屬性,方法。,一個類用,final,修飾,則它不可以被繼承。,一個屬性用,final,修飾,則它將成為一個常量。,一個方法用,final,修飾,則它不能被重寫。,抽象類別,抽象方法就是不完整的方法,方法體為空。,類中有抽象方法,則類必須為抽象類別,用,abstract,修飾的類叫抽象類別,如果子類沒有實現父類中的抽象方法,則子類必須也為抽象類別。,一個類不能同時用,abstract,和,final,修飾。,介面,當一個類中所有的方法都是抽象方法時,,Java,將它定義為介面。,interface ,和繼承父類相似,類可以實現介面。,class extends implements,*,類體,抽象類別和介面的多態性,抽象類別和介面都支援多態性,它們和類的多態性相似。,內部類,就是在一個類的,中間再定義一個類,class A,class B ,編譯後产生,A.class,和,A$B.class,兩個類文件,內部類的使用,創建了內部類之後,可以,在,的內部或外部使用它,注意:,內部類的名稱不能和它的外部類相同,內部類可以申明為,abstract,,並可以被其它內部類繼承。,內部類可以申明為,final,的。,內部類可以申明,为,private,或,protected,非,static,的內部類不能申明除常量之外的靜態成員。,定義在外部類方法體中的內部類稱為本地方法內部類,可以訪問外部類的其它成員,但不能訪問所在方法的區域變數。,還有一種特殊的內部類,,,static,內部類。,Java,檔的組織,Java,中用包來組織使用者的原始檔案,一個,Java,包可以認為是硬碟上的一個資料夾,.,Java,用,package,包名,;,來創建一個包,.,同一個包中的類可以互相訪問,.,要訪問不同包中的類,用,import,包名,;,導入要訪問的某包,.,包應用示例,如圖所示組織,Java,的文件,將,PA1,放入,package1,包中,將,PA2,放入,package2,包中,PA2,調用,PA1,,,testPA12,調用,PA1,和,PA2.,包應用示例,/,關於包涉及,PA1,PA2,testPA12,三個,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,目錄,/,編譯並運行,testPA12,/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;/*,應用升級:按照設計說明書的類圖編寫類,問題陳述:,某公司打算建造一幢兩層的辦公樓,並為它裝一部電梯。公司要求開發一個物件導向的類比程式,對電梯的運作進行建模,在電梯系統的類比程式裡,公司要求圖形化地顯示執行過程,在適當時刻,螢幕應顯示一個人走向電梯,按下一個按鈕,然後進入電梯,乘坐電梯,最後走出電梯。該圖形還應顯示電梯的移動、門的大開、指示燈的開和關、按下和重定按鈕式的亮暗變化。,應用升級:電梯遊戲系統包含的類,應用升級:實現,Elevator,類,對於,Elevator,類的,private,屬性,moving,、,summoned,、,currentFloor,、,capacity,、和,traveTime,他們的聲明代碼為:,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,遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境,3,:圖形化使用者介面設計,08,遊戲,3-2,目標和任務,目標:,為遊戲添加使用者介面,使用者交互,任務:,網上物流系統介面設計,電梯類比遊戲介面設計,學習過程,根据系统界面,的需要,在该程,序上添加其他,GUI,元素,进行布,局管理,添加事件,处理代码,开发电梯,模拟游戏界面,模仿教师提供,的源代码,開始,圖形化使用者介面(,GUI,)設計,學習內容,:,GUI,概述,容器有容器佈局,事件處理概述,事件模型,事件適配器,常用,swing,組件,項目:設計一個系統介面如下,:,項目分析,可將專案分成三個模組實現,:,所有的,GUI,都可分成以上三個模組實現,GUI,包,java.awt,包,是使用,Java,進行,GUI,設計的基礎。,javax.swing,包,幾乎所有,AWT,組件對應有新功能更強的,Swing,組件。另外還加入了一些全新的元件。,Swing,元件在名稱上前面多了一個字母,“,J,”,2,、,GUI,的創建步驟,(,1,)引用需要的包和類。,(,2,)設置一個頂層的容器。,(,3,)根據需要為容器設置佈局管理器或使用默認佈局管理器。,(,4,)將組件添加到容器內,位置自行設計。,(,5,)為回應事件的組件編寫事件處理代碼。,容器、組件、佈局和觀感,1,容器和組件,元件是可以用圖形化的方式顯示在螢幕上並能夠與使用者進行交互的物件。,容器是一種特殊的元件,一種能夠容納其他元件或容器的元件。,2.,佈局管理器,為了使圖形化使用者介面具有良好的平臺無關性,提供了專門用來管理元件在容器中的佈局的工具。,3.,觀感,決定,swing,應用程式的外觀。,常用容器,容器是放置其他,Swing,組件的頂級容器,JFrame,組件用於在,Swing,程式中創建表單,它的構造函數:,JFrame(),JFrame(String Title),元件必須添加至內容窗格,而不是直接添加至,JFrame,對象,示例:,frame.getContentPane().add(b);,JPanel,組件,用於將小型的羽量級元件組合在一起,JPanel,的缺省佈局為,FlowLayout,JPanel,具有下列構造函數:,JPanel(),JPanel(LayoutManager lm),JApplet,也是一種視窗容器,,,繼承自,Applet,類,,Applet,小程式是另一種,Java,程式,與,Applet,不同的是,它默認的佈局管理器是,JAppletBorderLayout,,而,Applet,默認的佈局管理器是,FlowLayout,。,可直接向,Applet,視窗中添加元件,但,JApplet,不行,添加元件時必須添加到其內容窗格中。得到內容窗格使用方法:,getContentPane();,常用組件,標籤,(JLabel),它既可以顯示文本也可以顯示圖像,構造函數如下:,JLabel(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=new JButton,(,確定!,);,JButton btnCancel=new JButton(,取消,!,);,getContentPane.add(btnOk);,getContentPane.add(btnCancel);,常用組件,文字方塊,-JTextField,JTextField,元件允許輸入或編輯單行文本,此類的構造函數包括:,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,元件允許輸入或編輯單行文本,並且文本被其他字元代替。,此類的構造函數與單行文字方塊類似。,其它方法:,char getPassword(),char getEchoChar(),void setEchoChar(char c),常用組件,文字方塊,-JTextArea,JTextArea,元件用於接受來自使用者的多行文本,它可實現可滾動介面,JTextArea,元件可使用下列構造函數創建:,JTextArea(),JTextArea(int rows,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,選項按鈕允許使用者從多個選項中選擇其中一個,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),常用組件,清單方塊,-JList,public JList():,使用空模型構造,JList,public JList(ListModel dataModel):,構造一個清單,用它顯示指定模型中的元素。,public JList(Object listData):,構造一個清單以顯示指定陣列,listData,的元素。,JList,不支持滾動。要啟用滾動,可使用下列代碼,:,JScrollPane myScrollPane=new JScrollPane();,myScrollPane.getViewport().setView(dataList);,常用組件,下拉式列示方塊,-JComboBox,文本域和下拉清單的組合,在,Swing,中,下拉式列示方塊由,JComboBox,表示,構造函數如下:,public JComboBox():,此構造函數使用缺省資料模型創建,JComboBox,public JComboBox(ComboBoxModel asModel):,使用現有,ComboBoxModel,中的項目的下拉式列示方塊,public JComboBox,(Object items):,包含指定陣列元素的下拉式列示方塊,常用組件,菜單,功能表顯示專案清單,指明各種任務。,選擇或按一下某個選項時會打開另一個清單或子功能表。,Swing,功能表由功能表列、功能表和功能表項目構成。,功能表列是所有菜單和功能表項目的根,JMenuBar,是可通過,JFrame,、,JWindow,的根窗格添加至容器的組件。,由多個,JMenu,組成,每個,JMenu,在,JMenubar,中都表示為字串。,JMenu,在,JMenuBar,下以文本字串形式顯示,而在使用者按一下它時,則以彈出式功能表顯示。,JMenuItem,為,JMenu,中的一個元件,以文本字串形式顯示,可以具有圖示,外觀可以修改,如字體、顏色、背景、邊框等。,彈出式菜單,JPopupMenu,的定義和使用:,常用組件,對話方塊,1,JOptionPane,對話方塊,是強制回應對話方塊,它提供了很多現成的對話方塊樣式,可以供使用者直接使用。,2,JFileChooser,對話方塊,提供了標準的檔的打開、保存對話方塊。,佈局管理器,4,、佈局管理器,Java,中的佈局類型包括以下幾種:,FlowLayout,(流式佈局),BorderLayout,(邊界佈局),GridLayout,(網格佈局),CardLayout,(卡片佈局),GridBagLayout,(網格包佈局),FlowLayout,佈局管理器,FlowLayout,的構造函數有:,FlowLayout():,生成一個默認的流式佈局,FlowLayout(int alignment):,可以設定每一行元件的對齊方式,FlowLayout(int alignment,int horz,int vert):,可以設定元件間的水準和垂直距離,Applet,和麵板的缺省佈局,組件從左上角開始按從左到右、從上到下的方式排列,BorderLayout,佈局管理器,下麵是,BorderLayout,所定義的構造函數:,-BorderLayout():,生成默認的邊界佈局,-BorderLayout(int horz,int vert):,可以設定元件間的水準和垂直距離,窗口、框架和對話方塊等的缺省佈局,組件被置於容器的北、南、東、西或中間位置,GridLayout,佈局管理器,GridLayout,的構造函數如下所示:,-,GridLayout,():,生成一個單列的網格佈局,-GridLayout(int row,int col,):,生成一個設定行數和列數的網格佈局,-GridLayout(int row,int col,int horz,int vert,),:可以設置元件之間的水準和垂直間隔,用於將容器區域劃分為一個矩形網格,組件按行和列排列,見後面計算器的佈局例,swing,佈局管理器,1.BoxLayout,佈局管理器,按照從上到下(即,Y,軸)或者從左到右(即,X,軸)的順序來依次排列元件。,2.ScrollPaneLayout,佈局管理器,是,JScrollPane,中的內置佈局管理器,所以不需要單獨創建,會自動設置。,手動佈局,在某些情況下,使用者不想使用佈局管理器,需要自己設置元件的位置和大小,這時應取消容器的佈局管理器,然後再進行設置,否則用戶自訂設置將會被佈局管理器覆蓋。取消佈局管理器的方法是:,setLayout(null);,用戶使用,setLocation(),、,setSize(),、,setBounds(),等方法為元件設置位置和大小。需要注意的是,這種方法會導致程式與系統相關,如不同的解析度會產生不同的效果。,5,、事件處理模型,Java,最新的事件處理方法是基於授權事件模型,當事件來源物件因使用者的操作(滑鼠或鍵盤),系統會自動觸發此事件類物件,E,,並通知所授權的事件監聽者,A,(若來源對象已向,A,註冊),事件監聽者,A,中有處理各種事件的方法,(,事件處理者,1n),便會處理此事件,E,的各種狀況。,事件處理方法,實現事件監聽器介面法:,首先給元件註冊監聽器,使用下列方法:,addxxxListener(,事件監聽器对象,);,確定了事件監聽器的類型後,必須在程式中定義類來實現這些介面,重寫介面中的所有方法。,事件適配器,使用實現事件監聽器介面的方法處理事件時,必須重寫監聽器介面中的所有方法,儘管有些方法不會用到。,繼承事件適配器類,只需要重寫所需要的方法即可。,項目核心:只包括少數組件,import javax.swing.*;,import java.awt.*;,class P115 extends JFrame,JLabel jLabel;,P115(),super(,網上物流系統,);,setDefaultCloseOperation(EXIT_ON_CLOSE);,setVisible(true);,jLabel=new JLabel(,請選擇貨物出發地,);,getContentPane().add(jLabel);,pack();,public static void main(String args),P115 demo=new P115();,運行結果,功能擴展:包括更多組件的,GUI,按照創建元件,介面佈局,添加事件處理三個部分完成包括更多元件的,GUI,。,如下圖所示:,應用升級,為電梯類比遊戲創建介面,如下圖,:,Java,遊戲開發(貪吃蛇、模擬電梯遊戲)學習情境,4,:塗鴉遊戲設計,08,遊戲,3-2,目標和任務,目標:遊戲場景中圖形影像處理,任務:塗鴉遊戲,用戶可選擇一種顏色,用滑鼠在螢幕上隨意繪畫,電梯類比遊戲的場景圖片載入,學習過程,項目核心:創建一個,Applet,容器,在其中繪圖,功能擴展:使用者通過交互控制圖形繪製,圖像載入,應用升級:為,“,電梯模擬遊戲,”,載入樓層,電梯井等圖像,什麼是,Applet,一个,JavaApplet,就是一個嵌入在另一個程式裡面運行的應用程式。就是說,Applet,是不能單獨運行的應用程式。,Web,的流覽器,,appletview,可以運行,Java,的,Applet,。,Applet,的內容可以是文本,聲音,圖像。,Java,有,Application,和,Applet,兩種程式。,Applet,的生命週期,調用,init(),方法將,Applet,載入到容器,調用,start(),方法,調用,paint(),方法,調用,stop(),方法,調用,destroy(),從容器中清除,Applet,項目核心,創建一個可以在上面用滑鼠塗鴉的,Applet,程式,運行情況如下:,/,核心案例,檔案名:,Scribble.java,創建,Applet,繪圖容器,1,通過繼承,Applet,類創建,Applet,繪圖容器,import java.applet.*;,public class Scribble extends Applet,/,定義成員屬性,/,在,Applet,的子類中覆蓋,Applet,類的,init(),方法,2 init(),是,java.applet.Applet,類中的方法,當,applet,程式首次被打開時,,init(),將第一個被自動執行。,添加滑鼠動作監聽,(,1,)由於要對,Applet,容器中發生的滑鼠按下和滑鼠拖動事件進行繪圖回應,可以直接在,init,(),方法中添加語句:,addMouseListener(this);,addMouseMotionListener(this);,(,2,)實現,MouseListener,和,MouseMotionListener2,個介面,public class Scribble extends Applet impl
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服