Java開發(fā)綜合實戰(zhàn)高職PPT完整全套教學課件_第1頁
Java開發(fā)綜合實戰(zhàn)高職PPT完整全套教學課件_第2頁
Java開發(fā)綜合實戰(zhàn)高職PPT完整全套教學課件_第3頁
Java開發(fā)綜合實戰(zhàn)高職PPT完整全套教學課件_第4頁
Java開發(fā)綜合實戰(zhàn)高職PPT完整全套教學課件_第5頁
已閱讀5頁,還剩410頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章Java開發(fā)綜合實戰(zhàn)Java開發(fā)環(huán)境和工具【ch01】Java開發(fā)環(huán)境和工具.pptx【ch02】面向對象編程基礎.pptx【ch03】面向對象編程核心技術.pptx【ch04】異常處理.pptx【ch05】圖形用戶界面設計.pptx【ch06】GUI事件處理.pptx【ch07】I或O操作.pptx【ch08】網絡編程基礎.pptx【ch09】多線程技術.pptx【ch10】多線程技術.pptx全套可編輯PPT課件01初識Java開發(fā)初識Java開發(fā)Javo的特性與應用領域Java是20世紀90年代初,由美國Sun公司針對像有線電視轉換盒這類處理能力和內存都很有限的消費設備,設計的一種用于開發(fā)小型家電設備的嵌入式應用的計算機語言。這種語言最初被命名為Oak,其代碼短小、緊湊且與平臺無關。由于市場對智能型家電的需求的增長速度不如預期的快,因此該語言推出后反響平平。初識Java開發(fā)Javo的特性與應用領域作為在網絡時代得到廣泛應用的編程語言之一,Java具有以下優(yōu)勢。●簡潔易學?!窨缙脚_/可移植性。●安全性。●高性能?!穹植际健!穸嗑€程?!窠研?。初識Java開發(fā)Java開發(fā)的學習路線根據應用環(huán)境的不同,Java分為三個不同版本:JavaSE、JavaEE和JavaME。JavaSE(JavaStandardEdition)稱為標準版,定位于桌面級應用程序的開發(fā)。JavaEE(JavaEnterpriseEdition)稱為企業(yè)版,其核心是EJB(企業(yè)Java組件模型),定位于企業(yè)級分布式的網絡應用開發(fā),如電子商務網站開發(fā)和ERP系統(tǒng)開發(fā)。初識Java開發(fā)Java開發(fā)的學習路線JavaME(JavaMicroEdition)稱為微型版,定位于嵌入式系統(tǒng)的開發(fā),例如,掌上電腦、手機等移動通信電子設備。根據電子消費產品的需求,JavaME精簡了JavaSE核心類庫,也有自己的適合開發(fā)微小裝置的擴展類。初識Java開發(fā)認識、安裝JDK12什么是JDKJDK是JavaDevelopmentKit的縮寫,即Java開發(fā)工具包,包括用于開發(fā)和測試用Java編寫并在Java平臺上運行的程序的工具,如JRE、編譯器和調試器等開發(fā)工具。安裝JDK本書使用的是JavaSE平臺的長期支持(LTS)版本Java17。Java17帶來的不僅有新功能,還有更快的LTS節(jié)奏和免費的OracleJDK,這些使其成為有史以來支持最好的現代版本。初識Java開發(fā)認識、安裝JDK初識Java開發(fā)配置環(huán)境變量123在桌面上選中“此電腦”圖標并右擊,在彈出的快捷菜單中選擇“屬性”命令,在打開的“系統(tǒng)”對話框左側窗格中單擊“高級系統(tǒng)設置”鏈接,打開“系統(tǒng)屬性”對話框。單擊“系統(tǒng)屬性”對話框底部的“環(huán)境變量”按鈕,打開如圖1-7所示的“環(huán)境變量"對話框。在"系統(tǒng)變量"列表框中雙擊Path變量(拖動滾動條可找到),打開如圖1-8所示的“編輯環(huán)境變量”對話框。初識Java開發(fā)配置環(huán)境變量初識Java開發(fā)配置環(huán)境變量4單擊“編輯文本”按鈕,打開“編輯系統(tǒng)變量”對話框,在“變量值”文本框中,將C:SProgramFilesiCommonFiles\OracleVavaljavath修改為JDK的安裝目錄(如C:\ProgramFilesVava\jdk-17.0.1\)的bin文件夾,如圖1-9所示。初識Java開發(fā)配置環(huán)境變量5單擊"確定"按鈕,依次退出上述對話框,即可完成JDK的環(huán)境變量配置。初識Java開發(fā)Java程序的開發(fā)流程JDK的環(huán)境變量配置好之后,就可以編寫、運行Java程序了。Java程序的開發(fā)流程如圖1-12所示。初識Java開發(fā)使用JavaAPI文檔API(ApplicationProgrammingInterface)是應用程序編程接口。JavaAPI文檔涵蓋了Java中海量的API,提供了類的繼承關系、成員變量、成員方法、構造方法、靜態(tài)成員的詳細說明,是Java程序開發(fā)過程中不可或缺的編程詞典。初識Java開發(fā)使用JavaAPI文檔(1)在瀏覽器地址欄中輸入離線文檔的網址https:///java/technologies/javase-jdk17-doc-downloads.html,訪問JDK文檔中心。(2)單擊鏈接jdk-17.0.1_doc-all.zip,下載文檔,如圖1-16所示。(3)解壓縮下載的文檔,可以看到如圖1-17所示的文檔結構,雙擊其中的index.html,即可打開文檔,如圖1-18所示。(4)單擊要查看的API鏈接文本,即可進入相應的界面查看詳細說明。初識Java開發(fā)使用JavaAPI文檔02使用Eclipse開發(fā)Java程序使用Eclipse開發(fā)Java程序安裝配置EclipseIDE(IntegratedDevelopmentEnvironment,集成開發(fā)環(huán)境)集應用程序源碼編輯、組織、編譯、調試、運行等功能于一體,具有代碼自動提示功能,代碼被修改后可以自動重新編譯并直接運行,能極大地提高開發(fā)效率。使用Eclipse開發(fā)Java程序安裝配置Eclipse(1)登錄Eclipse官網的下載界面,單擊如圖1-19所示的DownloadPackages鏈接。使用Eclipse開發(fā)Java程序安裝配置Eclipse(2)在打開的界面中,找到EclipseIDEforJavaDevelopers選項,根據操作系統(tǒng)選擇對應的下載鏈接下載IDE,如圖1-20所示。(3)在打開的下載界面中單擊Download按鈕,開始下載Eclipse,如圖1-21所示。使用Eclipse開發(fā)Java程序安裝配置Eclipse使用Eclipse開發(fā)Java程序安裝配置Eclipse(4)下載完成后,將壓縮包解壓縮到合適的目錄下,無須安裝即可使用。(5)雙擊解壓縮文件夾中的eclipse.exe文件,即可啟動Edlipse,彈出如圖1.22所示的clipseIDELauncher對話框。使用Eclipse開發(fā)Java程序安裝配置Eclipse(6)單擊Browse按鈕,設置Eclipse的工作空間(Workspace)。(7)單擊Launch按鈕,即可啟動Eclipse。在初次啟動時,會顯示如圖1-23所示的歡迎界面。(8)關閉歡迎界面,即可進入Eclipse的工作界面,如圖1-24所示。編輯器兩側和底部為各種窗格。使用Eclipse開發(fā)Java程序安裝配置Eclipse使用Eclipse開發(fā)Java程序開發(fā)Java程序Java程序(也稱項目)以類為基本單位,由若干個類構成。為便于維護,每個類被放置在一個源文件中。Java程序必須有一個主類,即含有main()方法(主方法)的類,它是執(zhí)行程序的入口。使用Eclipse開發(fā)Java程序導入項目文件如果要將已有的項目文件導入Eclipse中,可以執(zhí)行以下操作。(1)在菜單欄中選擇File→lmport命令,打開Import對話框,如圖1-34所示。使用Eclipse開發(fā)Java程序導入項目文件(2)展開列表框中的General節(jié)點,選擇ExistingProjectsintoWorkspace選項。(3)單擊Next按鈕,在打開的對話框中單擊Browse按鈕,選中項目文件所在的文件夾。Eclipse即可自動識別Java項目文件名稱并將選中的項目文件添加到Projects列表框中,如圖1-35所示。使用Eclipse開發(fā)Java程序導入項目文件(4)單擊Finish按鈕,即可將指定的項目文件導入當前工作空間中,并且顯示在PackageExplorer窗格中。使用Eclipse開發(fā)Java程序為項目添加常用類庫一個大型完整的Java項目,往往需要多個JAR類庫的支持,例如,JDBC數據庫連接的類庫、Hibernate類庫、Spring類庫,以及一些自定義類庫等,這些類庫必須添加到當前項目的構建路徑中才能被使用。使用Eclipse開發(fā)Java程序為項目添加常用類庫(1)在Eclipse中選擇Window→Preferences命令,在打開的對話框左側窗格中選擇Java→BuildPath→UserLibraries選項,在右側窗格中單擊New按鈕,打開NewUserLibrary對話框,如圖1-36所示。使用Eclipse開發(fā)Java程序為項目添加常用類庫(2)輸入類庫名稱,單擊OK按鈕創(chuàng)建用戶庫。(3)單擊AddExternalJARs按鈕,在打開的JARSelection對話框中選擇需要添加的jar包,單擊Open按鈕添加類庫,單擊ApplyandClose按鈕關閉對話框。(4)如果要在項目中使用某個用戶庫,則可以執(zhí)行以下操作。(5)單擊Next按鈕,在顯示的庫列表中勾選需要的類庫,單擊Finish按鈕即可。使用Eclipse開發(fā)Java程序為項目添加常用類庫使用Eclipse開發(fā)Java程序程序調試1設置程序斷點在Eclipse編輯器中雙擊代碼行號,即可在當前行添加斷點或刪除斷點,如圖1-38所示。Java調試器每次遇到程序斷點時都將暫停當前程序的運行。使用Eclipse開發(fā)Java程序程序調試2以單步調試方式運行Java程序設置程序斷點后,在編輯器的空白位置右擊,在彈出的快捷菜單中選擇DebugAs→JavaApplication命令,Java調試器即可打開Debug窗格運行程序,并且在斷點處暫停程序的運行,如圖1-39所示。使用Eclipse開發(fā)Java程序程序調試3調試程序當程序遇到斷點暫停執(zhí)行時,可以利用工具欄上的調試工具(見圖1-40)對程序進行調試。使用Eclipse開發(fā)Java程序程序調試其中,"步進"(StepInto)和"步出"(StepOver)按鈕均用于單步調試。單擊“步進”按鈕.或按F5鍵,將進入本行代碼調用的方法或對象內部并繼續(xù)單步執(zhí)行程序。單擊“步出”按鈕或按F6鍵,則執(zhí)行本行代碼,但不進入調用方法內部單步執(zhí)行,之后跳到下一個可執(zhí)行點。項目總結感謝觀看第二章Java開發(fā)綜合實戰(zhàn)面向對象編程基礎01類與對象類與對象面向對象簡介面向對象是一種符合人類思維習慣的編程思想,是一種數據抽象和信息隱藏的技術。在程序開發(fā)中引入的面向對象編程(ObjectOrientedProgramming,OOP)的概念,其實質就是以對象為中心,以信息為驅動,對現實世界中的對象進行建模操作。由于它使軟件的開發(fā)更加簡單,又能降低軟件的復雜度,提高軟件的生產效率,因此得到了廣泛應用。類與對象面向對象簡介1封裝封裝是面向對象的核心思想,它有兩層含義:一層含義是指把描述對象屬性的變量及實現對象功能的方法看成一個密不可分的整體,將這兩者“封裝”在一個不可分割的獨立程序單位(即對象)中;另一層含義是指"信息隱藏",即為封裝在一個整體內的變量及方法設置不同級別的訪問權限。一些對象的屬性及行為允許外界用戶知道或使用,但不允許更改。類與對象面向對象簡介2繼承繼承主要指類與類之間的關系,首先擁有反映事物一般特性的類,然后在其基礎上派生出能反映特殊事物的類。通過繼承,可以更高效地對原有類的功能進行擴展。繼承不僅增強了代碼的復用性,提高了開發(fā)效率,還為程序的修改補充提供了便利。類與對象面向對象簡介3多態(tài)多態(tài)是指把子類型的對象主觀地看作其父類型的對象,那么父類型就可以包含很多種類型,對同一種行為能夠表現出很多種不同的形式。多態(tài)性可提高程序的抽象程度和簡潔程度,有助于程序開發(fā)人員之間進行協作。類與對象類的聲明與定義1.聲明類類是Java程序的基本要素,使用關鍵字class聲明,具體語法格式如下:類與對象類的聲明與定義2.定義成員變量定義成員變量的方法與定義變量類似,不同的是,成員變量前面可以加上修飾符,具體語法格式如下:類與對象類的聲明與定義3.定義成員方法定義成員方法的語法格式如下:類與對象構造方法在類中除了可以定義成員方法,還可以定義一個特殊的方法構造方法。構造方法是一個與類同名的方法,在使用關鍵字new實例化類對象時默認被調用,用于初始化成員變量。類與對象構造方法構造方法具有以下特點:●構造方法名與所在類的類名相同;●構造方法沒有返回值,不能指定返回值類型,也不能定義為void;●構造方法用于初始化無static修飾的成員變量。類與對象對象的創(chuàng)建及使用在Java中,實例化類對象的語法格式如下:類名對象名一new構造方法([參數列表]實例化匿名對象的語法格式如下:new構造方法(【參數列表】);類與對象對象的創(chuàng)建及使用在創(chuàng)建有名對象后,就可以通過“對象名”調用類中的成員,語法格式如下:類與對象調用本類結構變量都有作用域,只能在其作用域范圍內被使用。在類體中,成員變量的作用域為整個類體。成員方法的形參和方法體內聲明的變量為局部變量,其作用域為方法體。類與對象調用本類結構123當前對象:this。當前類中的屬性:this.屬性。當前類中的成員方法:this.方法名()。4當前類中的其他構造方法:this()。類與對象定義全局屬性和方法在Java中,使用關鍵字static可以聲明所有對象都可以使用的全局屬性和全局方法。使用關鍵字static聲明的變量或方法稱為靜態(tài)變量或靜態(tài)方法,統(tǒng)稱為靜態(tài)成員。相對地,無static修飾的類成員則稱為動態(tài)成員。類與對象定義全局屬性和方法調用靜態(tài)成員的語法格式如下:類名.靜態(tài)變量名類名.靜態(tài)方法名(參數列表)類與對象定義全局屬性和方法靜態(tài)方法不能直接調用動態(tài)成員,必須先實例化類對象,再由對象來引用動態(tài)成員。例如,類的main()方法就是一個靜態(tài)方法,如果在main()方法中直接訪問類的一個成員變量,就會報錯,提示不能在靜態(tài)方法中訪問非靜態(tài)的成員變量(field),如圖2-3所示。類與對象定義全局屬性和方法02使用數組使用數組創(chuàng)建數組1一維數組一維數組實質上是一組具有相同數據類型的數據的有序集合,整個集合使用數組名稱作為標識符,其中的每一個數據稱為一個數組元素,按照排列順序,使用一個唯一的索引(從0開始)進行標識。使用數組創(chuàng)建數組一維數組有以下兩種聲明方式:元素數據類型數組名稱【】;元素數據類型【】數組名稱;其中,【1表明聲明的變量是一個數組,門的數量代表了數組的維度,一個】表示一維數組。使用數組創(chuàng)建數組2二維數組二維數組可以看作以元素為數組的數組,即數組中的每個元素都是一個數組。二維數組的聲明方式與一維數組類似,也有兩種聲明方式,不同的是,二維數組包含兩個囗。使用數組創(chuàng)建數組具體語法格式如下:元素數據類型數組名稱【】【】;元素數據類型【】【】數組名稱;第2種格式是Java慣用的格式。使用數組遍歷數組如果數組中存儲的數據很多,利用數組元素中有規(guī)律的索引,并配合使用循環(huán)結構,可以很方便地獲取數組中的每個元素,即遍歷數組。一維數組通常使用for循環(huán)實現通歷,二維數組則可以利用雙層低套的tor循環(huán)通歷所有的行標和列標,從而訪問數組中的每個元素。使用數組遍歷數組為方便遍歷數組和集合,JDK1.5之后的版本提供了foreach循環(huán)。該循環(huán)是for循環(huán)的特殊簡化版本,語法格式如下:使用數組遍歷數組其中,元素變量表示數組或集合中的每個元素。每執(zhí)行一次循環(huán)語句,循環(huán)變量就讀取數組或集合中的一個元素。foreach循環(huán)和普通循環(huán)不同的是,它無須循環(huán)條件,無須循環(huán)迭代語句,自動迭代數組中的每個元素,當每個元素都被迭代一次之后,foreach循環(huán)自動結束。使用數組使用Arrays工具類1fill()該方法可將指定的int類型的值分配給int類型數組的每個元素。語法格式如下:Arrays.fill(數組,值)其中,第1個參數是要進行元素分配的數組,第2個參數是要分配給數組中的所有元素的值。使用數組使用Arrays工具類2sort()該方法可將數值類型數組和字符數組中的元素按照元素值由小到大的順序進行排列。語法格式如下:Arrays.sort(數組)使用數組使用Arrays工具類3toString()該方法可對數組進行遍歷,將數組中的所有元素以一個字符串的形式返回。語法格式如下:Arrays.toString(數組)使用數組使用Arrays工具類4equals()該方法可用于比較兩個相同類型的數組的值是否相同,返回布爾類型的邏輯值。語法格式如下:Arrays.equals(數組1,數組2)使用數組使用Arrays工具類5binarySearch()該方法可按照二分查找算法查找數組中是否包含指定的值,如果包含,則返回該值在數組中的索引;如果不包含,則返回負值。語法格式如下:Arrays.binarySearch(數組,值)使用數組使用Arrays工具類6copyOf()該方法可將指定的數組從索引為0的元素開始復制到給定長度的新數組中。如果給定的長度超過源數組長度,則用null進行填充。語法格式如下:Arrays.copyOf(源數組,新長度)使用數組使用Arrays工具類7copyOfRange()該方法可將源數組中指定下標范圍內的元素復制到一個新數組中。語法格式如下:Arrays.copyOfRange(源數組,開始索引,結束索引)03處理字符串處理字符串創(chuàng)建String類的字符串String是Java中的文本數據類型,其本質是字符數組,可以包含若干個字符。字符串中的字符必須被包含在雙引號中。字符串是常量,在創(chuàng)建之后不能更改字符串的值,但是可以通過使用其他變量重新賦值的方式進行更改。處理字符串創(chuàng)建String類的字符串創(chuàng)建String類的字符串有兩種方式:一種是使用雙引號賦值創(chuàng)建,另一種是使用關鍵字new創(chuàng)建。例如:處理字符串String類的常用操作1.連接字符串連接字符串是程序設計中常用的一種字符串操作,方法是使用“+”運算符連接字符串與其他類型的數據,生成一個String對象。如果某個字符串較長,在一行中輸入不便于閱讀,則可以使用"+"運算符將字符串分割為多行。處理字符串String類的常用操作2.獲取字符串內容(1)獲取字符串的長度。(2)獲取字符串中指定位置的字符。(3)獲取指定字符或子串在字符串中首次出現的位置。(4)提取子串。處理字符串String類的常用操作3.判斷字符串(1)contains()方法。(2)startsWith()方法和endsWith()方法。(3)equals()方法。(4)equalsIgnoreCase()方法。處理字符串String類的常用操作4.轉換字符串(1)轉換字母大小寫。(2)將其他類型轉換為字符串。(3)將字符串轉換為字符數組或字節(jié)數組。(4)將字符串轉換為字符串數組。處理字符串String類的常用操作5.修改字符串內容(1)替換字符序列。(2)刪除字符串兩端的空格。使用trim()方法可以刪除字符串首尾處的空格,語法格式如下:字符串名稱.trim();處理字符串正則表達式正則表達式是一種用于模式匹配和替換的規(guī)則,是由普通字符(如字母A~Z)及特殊字符(又稱為元字符)組成的字符串匹配的模式,常被用于判斷語句中,用來檢查一個字符串是否含有某種子串,或是否滿足某種格式。處理字符串正則表達式正則表達式中常用的元字符如表2-2所示。處理字符串正則表達式處理字符串創(chuàng)建StringBuffer對象前面介紹的String對象的字符序列是不可被修改的,如果希望存放字符序列的內存空間可以隨字符的多少自動改變大小,則可以使用StringBuffer對象。StringBuffer類是一個類似于String類的字符序列,可以存儲任意類型的數據,并且支持對字符串內容進行修改,長度可變,是線程安全的,通常用于在多線程操作字符序列的情況下操作大量數據。處理字符串StringBuffer類的常用方法143添加數據刪除數據修改數據2反轉字符串項目總結感謝觀看第三章Java開發(fā)綜合實戰(zhàn)面向對象編程核心技術01繼承與多態(tài)繼承與多態(tài)實現繼承子類可以繼承父類原有的屬性和方法,也可以增加自己特有的屬性和方法。例如,正方形是一種特殊的四邊形,正方形類繼承了四邊形類的所有屬性和方法(例如4條邊,4個角),還增加了一些正方形類特有的屬性和方法(例如4條邊相等,4個角都為直角)。繼承與多態(tài)實現繼承在類的聲明中,使用關鍵字extends聲明一個類繼承另一個類,即定義一個子類,語法格式如下:子類名稱extends父類名稱例如,下面的語句表示正方形類Square(子類)繼承四邊形類Quadrangle(父類):publicclassSquareextendsQuadrangle{//類體Chiftery繼承與多態(tài)實現繼承一個類可以有多個子類,子類又可以作為父類派生其他子類。Java的類按繼承關系形成樹狀結構,根節(jié)點是java.lang.Object類。也就是說,Java的所有類都直接或間接繼承自Object類。繼承與多態(tài)方法重寫在一般情況下,父類的成員會被子類繼承,子類對象在調用繼承的方法時,調用的是父類的實現。如果需要對繼承的方法進行不同的實現,則要重寫父類的成員方法。繼承與多態(tài)方法重寫重寫(Override)也稱為覆蓋,是指在子類中定義一個方法,該方法的名稱和參數列表與父類的成員方法相同,但修改或重新編寫了實現內容、返回值類型或訪問權限修飾符。也就是說,在Java中重寫方法必須滿足以下兩個條件:●子類方法名稱和父類方法名稱相同。●子類方法的參數類型、個數、順序與父類的成員方法完全相同。繼承與多態(tài)操作隱藏的父類成員如果子類聲明的成員變量與從父類繼承的成員變量同名,或者在子類的方法中定義了與父類成員變量同名的局部變量,子類就會隱藏所繼承的父類成員變量。如果子類重構了父類的成員方法,即子類有與父類方法同名的方法(相同的方法名、參數列表和返回值類型),則在子類范圍內,父類方法被隱藏。繼承與多態(tài)操作隱藏的父類成員關鍵字super有兩個功能:調用父類的成員變量和成員方法;調用父類的構造方法。語法格式如下?!駍uper.變量名:調用父類的成員變量?!駍uper.方法名(參數列表):調用父類的成員方法。●super(參數列表):調用父類的有參構造方法。如果沒有參數,則調用父類的無參構造方法,此時該語句可以省略。繼承與多態(tài)使用final關鍵字關鍵字final表示不可改變,不僅可修飾類,還可修飾類的成員方法和成員變量。語法格式如下:(1)修飾類。(2)修飾類的成員方法。(3)修飾類的成員變量。繼承與多態(tài)使用方法重載實現多態(tài)方法重載(Overload)是面向對象編程的多態(tài)特性的一種表現形式,具體是指在同一個類中定義多個名字相同但參數不同的方法。同一個方法名是對外的統(tǒng)一接口,參數列表不同導致內部實現也不同。繼承與多態(tài)使用方法重載實現多態(tài)在Java中,重載方法必須滿足以下條件:●方法名相同,包括字母大小寫?!穹椒ǖ膮盗斜肀仨毑煌梢允菂档念愋?、個數或順序不同?!穹椒ǖ姆祷刂殿愋?、修飾符可以相同,也可以不同。繼承與多態(tài)使用方法重載實現多態(tài)值得一提的是,在重載構造方法時,在構造方法的第1句中可以使用關鍵字this調用本類的其他構造方法,語法格式如下:this(參數列表)繼承與多態(tài)對象向上轉型如果一個類有很多子類,并且這些子類都重寫了父類中的某個方法,當把子類創(chuàng)建的對象的引用放到一個父類的對象中時,就得到了該對象的一個向上轉型對象。由于不同的子類在重寫父類的方法時可能產生不同的行為,因此向上轉型對象在調用這個方法時就具有多種形態(tài)。02抽象類與接口抽象類與接口抽象類與抽象方法Java使用關鍵字abstract修飾抽象類。抽象類在繼承體系中常位于頂層,不能被實例化。在抽象類中使用關鍵字abstract修飾的方法稱為抽象方法。語法格式如下:抽象類與接口抽象類與抽象方法抽象類中可以包含成員變量、構造方法、抽象方法和具體方法中的全部項或部分項。讀者需要注意的是,抽象方法在方法頭結尾處直接以分號結束,沒有方法體,也沒有定義方法體的一對花括號公。通常用于描述方法具有的功能,而不提供具體功能的實現。而對于具體方法來說,即使方法體為空,花括號目也不能省略。抽象類與接口聲明與實現接口如果一個抽象類中的所有方法都是抽象方法,就可以使用接口來定義這個類。接口是一系列抽象方法的聲明集合,是一個完全抽象的類,沒有方法的實現,具體實現由實現接口的類確定。因此這些方法可以在不同的地方被不同的類實現,從而表現出不同的行為(功能)。抽象類與接口聲明與實現接口接口的訪問權限可選值為public,如果被省略,則使用默認的訪問權限。接口體中可以定義成員變量和成員方法,由于變量默認均為publicstaticfinal類型,即靜態(tài)常量,因此必須顯式地對其進行初始化。接口中的方法默認都是publicabstract類型的抽象方法。抽象類與接口聲明與實現接口接口是建立類與類之間的協議的一種形式,沒有具體實現,在使用前需要先定義一個類,使用關鍵字implements表明該類實現某個或某些接口,語法格式如下:抽象類與接口聲明與實現接口Java使用關鍵字interface聲明接口,語法格式如下:抽象類與接口聲明與實現接口類實現接口實質上是一種繼承,一個類可以實現多個接口,從而能實現多重繼承,語法格式如下:03內部類內部類成員內部類所謂成員內部類,就是被定義在一個類內部,作為類的成員的類。定義成員內部類的語法格式如下:內部類成員內部類其中,OuterClass類是外部類,InnerClass類是內部類。成員內部類可使用static、public、protected和private修飾,而外部類只能使用public或默認修飾符修飾。需要注意的是,在成員內部類中不能定義靜態(tài)變量。內部類成員內部類與創(chuàng)建普通的類對象相同,成員內部類對象也使用關鍵字new創(chuàng)建;與普通類不同的是,成員內部類的對象實例化操作必須在外部類或外部類的非靜態(tài)方法中實現。如果在外部類中初始化一個成員內部類對象,成員內部類對象就會被綁定在外部類對象上。內部類成員內部類如果要在外部類和非靜態(tài)方法之外直接實例化成員內部類對象,可以采用以下語法格式:外部類.內部類內部類對象=new外部類().new內部類();內部類成員內部類從上面的語法格式中可以看到,當直接實例化成員內部類對象時,必須首先獲取相應的外部類對象,然后利用外部類對象進行成員內部類對象的實例化操作。成員內部類一旦編譯成功,就會成為和相應的外部類完全不同的兩個類。內部類局部內部類如果內部類被定義在一個類的方法或者一個作用域中,則被稱為局部內部類。與成員內部類的區(qū)別在于,局部內部類可看作方法中的一個局部變量,因此不能有public、protected、private及static修飾符,其訪問權限也僅限于方法內或者該作用域內。內部類局部內部類內部類匿名內部類匿名內部類是在接口和抽象類的應用上發(fā)展起來的。所謂匿名內部類,就是沒有具體名稱的內部類,通常用于將類體非常?。ㄖ挥泻唵螏仔校?,并且只需要使用一次的類作為參數傳遞給方法,以實現一個接口或繼承一個類。在Swing編程中,經常使用這種方式綁定事件,編寫事件監(jiān)聽的代碼,不僅方便,而且代碼容易維護。內部類匿名內部類在Java中創(chuàng)建匿名內部類的語法格式如下:內部類匿名內部類由于類的構造方法名稱必須與類名相同,而匿名內部類沒有類名,因此匿名內部類沒有構造方法,使用范圍非常有限。一般來說,匿名內部類用于繼承其他類或實現接口,只是對繼承方法的實現或重寫,并不需要增加額外的方法。內部類Lambda表達式Lambda表達式是指應用在SAM(SingleAbstractMethod,含有一個抽象方法的接口)環(huán)境下的一種簡化定義形式,用于簡化匿名內部類的定義結構。在Java中,Lambda表達式的基本語法格式如下://定義方法體(參數,參數,…)->{方法體);(參數,參數,…)->語句;//直接返回結果內部類Lambda表達式本案例首先從Console窗格中獲取要進行加法運算的兩個整數,然后利用Lambda表達式輸出這兩個整數的計算結果。通過本案例演示Lambda表達式的使用方法。內部類Lambda表達式(1)在Java項目InnerClass中定義一個接口LambdaExpression,聲明一個抽象方法compute()。具體代碼如下:內部類Lambda表達式(2)在項目中新建一個類LEDemo,使用Lambda表達式定義實現LambdaExpression接口的類,調用接口方法輸出計算結果。具體代碼如下:內部類Lambda表達式內部類Lambda表達式(3)運行LEDemo.java,根據提示在Console窗格中輸入兩個加數,即可輸出這兩個加數的和,如圖3-10所示。項目總結感謝觀看第四章Java開發(fā)綜合實戰(zhàn)異常處理01認識異常認識異常異常的類型在Java中,所有的異常均被作為對象來處理,程序發(fā)生異常時會產生異常類對象。java.lang.Throwable類是Java中所有錯誤類或異常類的根類,包含兩個重要的子類,即Error類和Exception類。認識異常異常的類型1Error類。Error類是程序無法處理的錯誤,表示在應用程序運行時出現的嚴重錯誤,例如,Socket編程時端口被占用、JVM可用內存不足等錯誤。這些錯誤不是異常,而是脫離程序員控制的問題,遇到這些錯誤,JVM會選擇終止線程。認識異常異常的類型2Exception類。Exception類是程序本身可以處理的異常,可分為運行時異常與編譯異常,可以被捕獲并處理。認識異常異常的類型運行時異常是指RuntimeException類及其子類的異常。這類異常通常由程序邏輯錯誤產生,是可以避免的異常,例如,對象沒有正常初始化、數組元素引用越界等。這些異常在編寫代碼時不會被編譯器檢測出來,可以不被捕獲。認識異常異常的類型編譯異常是指在Exception類中除RuntimeException類以外的異常類及其子類的異常,通常是無法預見的,由用戶的錯誤或問題引起,例如,要打開的文件不存在。針對這種異常,在編譯時,編譯器會提示需要捕獲。認識異常異常的類型在Java中,編譯異常必須被捕獲;不需要被捕獲的異常包括Error類及其子類的異常以及運行時異常。需要說明的是,產生運行時異常通常表明程序的設計或實現出現了問題,例如,除法運算的程序,在除數不為0時可正常運行。如果對這種問題不做處理,可能會導致程序在運行時拋出異常。認識異常常見的異常類Java中常見的異常類如表4-1所示。認識異常常見的異常類認識異常異常處理流程為了保證程序在出現異常之后仍然可以正確運行,在程序設計過程中使用如下語法結構進行異常處理:認識異常異常處理流程其中,try代碼塊中包含可能拋出異常的代碼,是捕獲并處理異常的范圍。catch子句有一個參數用于聲明可捕獲異常的類型,如果在運行過程中,try代碼塊中產生了異常,就自動實例化相應的異常類對象,然后匹配第1個catch子句中的異常類型,如果匹配,則執(zhí)行對應的異常處理代碼進行處理;如果不匹配,則與下一個catch子句中的異常類型進行匹配。認識異常異常處理流程認識異常異常處理流程語法結構中的finally子句是異常處理的出口,無論是否發(fā)生了異常,該子句中的代碼都會被執(zhí)行。該子句能夠對程序的狀態(tài)進行統(tǒng)一的管理,通常用于清理資源和關閉對象。如果沒有必要,finally子句也可以省略。認識異常Exception類的常用方法Exception類提供了一些方法,用于輸出產生異常的原因的描述,方便程序開發(fā)人員排查產生異常的原因,修復程序。Exception類的常用方法如表4-2所示。認識異常Exception類的常用方法認識異常Exception類的常用方法從表4-2中可以看出,Exception類提供了4種形式的構造方法。其中,使用Exception(Stringmsg)構造方法,可以將異常對應的描述作為字符串參數傳入構造方法,使用Exception類的getMessage()方法可以獲取該信息。02處理異常處理異常處理編譯異常編譯異常必須由try-catch語句進行捕獲和處理,或包含在方法聲明的throws列表中,由方法的調用者進行捕獲和處理,否則程序不能通過編譯。捕獲異常的語法格式是一個完整的結構,try、catch和finally3個子句不能單獨使用,但可以組合為try-catch、try-catch-finally或try-finally結構使用。處理異常處理編譯異常在ATM上只能取整數金額。假設Mark的某個銀行賬戶的余額有1203.68元,他想一次性全部取出并注銷賬戶。本案例模擬在ATM上取款,在Console窗格中輸入取款金額,產生數字格式轉換異常的場景。處理異常處理編譯異常(1)新建一個項目BankAccount,在其中添加一個名為BankAccount的類。(2)引入包,在BankAccount類中添加main()方法,編寫代碼。具體代碼如下:處理異常處理編譯異常處理異常處理編譯異常處理異常處理編譯異常(3)運行程序,在Console窗格中輸入取款金額,如果輸入的取款金額不是整數,則產生異常并輸出異常信息,如圖4-5所示。如果輸入的取款金額是大于賬戶余額的整數,則輸出錯誤提示信息,如圖4-6所示。如果輸入的取款金額是小于賬戶余額的整數,則輸出取款后的賬戶余額,如圖4-7所示。處理異常處理編譯異常處理異常在方法中拋出異常如果程序中的異常是在某個方法中產生的,但不希望在當前方法中處理這個異常,則可以借助throws和throw關鍵字拋出這個異常類對象。由于異常類對象本身帶有類型信息,因此只需要在上層捕獲,就可以在任何地方拋出。處理異常在方法中拋出異常1使用throws關鍵字拋出異常在定義方法時使用throws關鍵字聲明,表示在該方法中可能拋出異常,但不處理異常,而是交給方法的調用者進行處理。語法格式如下:處理異常在方法中拋出異常如果要在該方法中拋出多個異常,則需要使用逗號分隔異常類型名。在調用使用throws關鍵字聲明的方法時,不管該方法是否會產生異常,調用處都應該采用try-catch語句對異常進行處理。如果在定義main()方法時使用throws關鍵字聲明,則拋出的異常只能交給JVM處理。處理異常在方法中拋出異常2使用throw關鍵字拋出異常異常類對象通常是在產生異常時,由JVM自動實例化的。如果用戶要手動實例化異常類對象,就需要使用throw關鍵字。將throw關鍵字用在方法體內,不僅可拋出Exception類中的子類異常,還可以拋出自定義異常,由方法體內的語句進行處理。處理異常在方法中拋出異常通過throw關鍵字拋出異常后,如果要在上一級代碼中捕獲并處理異常,首先需要在拋出異常的方法聲明中使用throws關鍵字表明要拋出的異常,然后在上一級代碼中使用try-catch語句捕獲異常。處理異常自定義異常類在實際應用中,Java提供的異常類有時并不能滿足程序的異常處理需求,例如,電話號碼中包含字符,輸入的年齡為負數等。在這種情況下,用戶可以根據程序的邏輯自定義異常類,以捕獲和處理程序特有的運行異常。處理異常自定義異常類如果要自定義編譯異常類,則可以通過繼承Exception類的方式創(chuàng)建,具體的語法格式如下:處理異常自定義異常類如果要自定義運行時異常類,則可以通過繼承RuntimeException類的方式創(chuàng)建,具體的語法格式如下:處理異常自定義異常類與其他類相同,自定義異常類的類體中包括構造方法、成員變量和成員方法。自定義異常類的構造方法一般用于指定該異常的描述信息,例如:處理異常自定義異常類(1)新建一個項目WeightLimite,在其中添加一個名為WeightException的自定義異常類。具體代碼如下:處理異常自定義異常類(2)添加一個名為Lorry的類,在類體中定義成員變量和成員方法。具體代碼如下:處理異常自定義異常類處理異常自定義異常類(3)在項目中添加一個名為TestWeight的類,編寫main()方法實例化貨車對象,捕獲并處理異常。具體代碼如下:處理異常自定義異常類(4)運行程序。如果輸入的質量小于0或在規(guī)定范圍內,則輸出對應的提示信息,如圖4-11和圖4-12所示。如果輸入的質量超出規(guī)定上限,則拋出異常。此時,在Console窗格中可以看到捕獲到的異常的描述信息,如圖4-13所示。處理異常自定義異常類項目總結感謝觀看第五章Java開發(fā)綜合實戰(zhàn)圖形用戶界面設計01初識JavaSwing初識JavaSwingSwingin概述Java早期在進行圖形用戶界面設計時,主要使用Java抽象窗口工具包(AbstractWindowToolkit,AWT)java.awt提供的用于設計圖形用戶界面的組件類。javax.swing包(簡稱Swing)是隨JDK1.2推出的一個新包,提供了功能更為強大的設計圖形用戶界面的類。初識JavaSwingSwingin概述java.awt和javax.swing包中部分類的層次關系如圖5-1所示。初識JavaSwingSwingin概述從圖5-1中可以看出,在javax.swing包中,JComponent類是java.awt包中Container類的一個直接子類,所有組件都是從該類中擴展出來的。它也是java.awt包中Component類的一個間接子類。初識JavaSwing容器容器是圖形用戶界面設計中必不可少的一種界面元素,是用來放置其他組件的一種特殊部件。在Java中,使用Container的子類或間接子類創(chuàng)建的對象被稱為容器。初識JavaSwing容器1底層容器底層容器是指最外層的容器,即包含所有組件或容器的那層容器。Java提供的JFrame類的實例,即通常所說的窗口就是一個底層容器:JDialog類的實例,即通常所說的對話框,也是一個底層容器。初識JavaSwing容器2面板容器面板容器是一種沒有邊框、沒有標題欄的中間層容器。常見的面板容器有兩種:一種是普通的面板容器,在Swing中用JPanel類實現;另一種是帶滾動視圖的面板容器,在Swing中用JScrollPane類實現。初識JavaSwing組件在Java中,使用Component類的子類或間接子類創(chuàng)建的對象被稱為組件。常用的Swing組件如表5-1所示。初識JavaSwing組件初識JavaSwing組件02創(chuàng)建常用容器與布局創(chuàng)建常用容器與布局JFrame窗口JFrame類是Component類和Container類的間接子類。JFrame類的實例是一個底層容器,通常也被稱為窗口。在開發(fā)應用程序時,可以通過繼承JFrame類或直接使用JFrame類的實例創(chuàng)建一個窗口。創(chuàng)建常用容器與布局JFrame窗口在Java應用程序中創(chuàng)建JFrame窗口的一般操作過程為:創(chuàng)建窗口→定位窗口→指定窗口擴展和關閉方式→指定窗口可見。創(chuàng)建常用容器與布局JFrame窗口1創(chuàng)建窗口在Java中,可以使用JFrame類或其子類創(chuàng)建窗口,語法格式如下:創(chuàng)建常用容器與布局JFrame窗口2定位窗口定位窗口包括設置窗口大小和顯示窗口位置。JFrame類從各層父類中繼承了多個用于處理窗口大小和位置的方法,如下所示。publicvoidsetSize(intwidth,intheight):設置窗口的寬度和高度。publicvoidsetResizable(booleanb):設置窗口是否可調整大小,默認可調整大小。publicvoidsetLocation(intx,inty):設置窗口左上角在屏幕上的坐標位置,默認位置為(0,0)。publicvoidsetBounds(inta,intb,intwidth,intheight):設置窗口的初始位置為(a,b),寬為width,高為height。創(chuàng)建常用容器與布局JFrame窗口3指定窗口擴展和關閉方式JFrame窗口包括“最大化”“最小化”“關閉”等按鈕。在創(chuàng)建窗口后,可以使用setExtendedState()方法指定窗口的擴展方式。該方法的參數取值為JFrame類中的下列靜態(tài)常量。創(chuàng)建常用容器與布局JFrame窗口4指定窗口可見由于JFrame窗口在創(chuàng)建后默認是不可見的,因此必須在程序中調用setVisible()方法顯示窗口,其參數值為true或false。創(chuàng)建常用容器與布局JDialog對話框JDialog類繼承了AWT組件中的Dialog類,用于創(chuàng)建JDialog對話框。與JFrame窗口類似,可以使用JDialog類或其子類的對象創(chuàng)建JDialog對話框,在使用時也需要調用getContentPane()方法將窗口轉換為容器,并且在容器中設置窗口的特性。JDialog對話框默認使用的布局管理器是邊界布局管理器。創(chuàng)建常用容器與布局JDialog對話框●publicJDialog():創(chuàng)建一個沒有標題和父窗口的對話框?!駊ublicJDialog(Framef):創(chuàng)建一個沒有標題、指定父窗口的對話框。●publicJDialog(Framef,booleanmodel):創(chuàng)建一個沒有標題的指定類型的對話框并指定父窗口f。●publicJDialog(Framef,Stringtitle):創(chuàng)建一個指定父窗口和標題的對話框?!駊ublicJDialog(Framef,Stringtitle,booleanmodel):創(chuàng)建一個指定父窗口、標題和類型的對話框。創(chuàng)建常用容器與布局JPanel面板JPanel是一種常用的容器種類。在實際應用中,經常使用JPanel先創(chuàng)建一個面板,然后在面板中添加組件并把面板添加到其他容器中。JPanel面板默認使用的布局管理器是流式布局管理器,在同一個窗口中可以添加多個JPanel面板,每個面板采用不同的布局管理器,從而實現富于變化的界面。創(chuàng)建常用容器與布局JPanel面板在Java應用程序中,使用JPanel面板的基本步驟如下。(1)定義一個JPanel類的子類并實例化一個類對象。JPanel類提供了如下兩種形式的構造方法?!馢Panel():創(chuàng)建一個布局管理器為FlowLayout的面板?!馢Panel(LayoutManagerlayout):創(chuàng)建一個布局管理器為layout的面板。(2)使用getContentPane().add()方法將面板放置到窗口中。創(chuàng)建常用容器與布局JScrollPane滾動面板當某個界面中的組件較多或某個組件的內容較多時,由于屏幕大小的限制,因此不能在同一屏幕中顯示界面中的全部組件,此時,可以使用帶滾動功能的視圖容器。JScrollPane類實現了一個帶滾動條的面板,用于為不自帶滾動條的組件添加滾動條。創(chuàng)建常用容器與布局JScrollPane滾動面板創(chuàng)建常用容器與布局布局管理器在圖形用戶界面中,每個組件在容器中都有具體的位置和大小。使用布局管理器可以使容器中的組件按照指定的策略進行擺放,管理整個窗口的布局。不僅如此,如果改變容器的大小,布局管理器也可以準確地把組件放到指定的位置,從而有效地避免版面混亂。創(chuàng)建常用容器與布局布局管理器1流式布局管理器FlowLayout被稱為流式布局管理器,它是JPanel面板的默認布局管理器。FlowLayout類提供了以下3種形式的構造方法用于創(chuàng)建布局管理器對象。創(chuàng)建常用容器與布局布局管理器2邊界布局管理器BorderLayout被稱為邊界布局管理器,它是JFrame窗口的默認布局管理器。這種布局管理器把容器的布局分為5個區(qū)域,分別為NORTH(北)、WEST(西)、CENTER(中)、EAST(東)和SOUTH(南),中間區(qū)域最大,如圖5-3所示。創(chuàng)建常用容器與布局布局管理器3網格布局管理器GridLayout被稱為網格布局管理器,這種布局管理器的特點是將容器按照指定的行數和列數劃分成大小相同的網格,組件被放置于這些劃分出來的網格中,并且自動占據網格的整個區(qū)域。創(chuàng)建常用容器與布局布局管理器4卡片布局管理器CardLayout被稱為卡片布局管理器,使用這種布局管理器的容器可以容納多個組件,這些組件像一張張卡片一樣被層疊放入容器中。最先被放入容器的是第一個組件(在最上面),依次向下排列。這種布局管理器的特點是在同一時刻容器只能顯示其中的一個組件,并且被顯示的組件占據容器的整個區(qū)域。創(chuàng)建常用容器與布局布局管理器5網格包布局管理器GridBagLayout通常被稱為網格包布局管理器,是最靈活也是最復雜的一種布局管理器。它與卡片布局管理器類似,不同的是,它允許網格中的組件大小各不相同,而且允許一個組件跨越一個或者多個網格。創(chuàng)建常用容器與布局布局管理器6自定義布局如果不希望使用布局管理器對容器進行布局,則可以取消布局管理器,通過自定義組件的位置和大小來對容器進行布局。(1)調用容器中的setLayout(null)方法取消布局管理器。(2)調用組件中的Component.setBounds()方法設置每個組件的大小和位置。03使用常用組件使用常用組件標簽組件JLabel類提供了多種形式的構造方法,用于創(chuàng)建多種形式的標簽,常用的構造方法如下?!駊ublicJLabel():創(chuàng)建一個不帶圖標和文本的標簽。publicJLabel(Iconicon):創(chuàng)建一個帶圖標的標簽。●publicJLabel(Iconicon,intalign):創(chuàng)建一個帶圖標的標簽,圖標的水平對齊方式為align。使用常用組件標簽組件使用常用組件文本組件1.文本框組件(JTextFieldJTextField類的對象用于實現一個文本框,文本框可以接收用戶輸入的單行文本。JTextriela類中常用的構造方法如下。使用常用組件文本組件2.密碼框組件(JPasswordField)JPasswordField類的對象用于實現一個密碼框,密碼框可以接收用戶輸入的單行文本,創(chuàng)建、使用方法與文本框基本相同。唯一不同的是,在密碼框中并不顯示用戶輸入的真實信息,而是顯示指定的回顯字符作為占位符。使用常用組件文本組件3.文本域組件(JTextArea)JTextArea類的對象用于實現一個文本域,文本域可以接收用戶輸入的多行文本。JTextArea類中常用的構造方法如下。使用常用組件文本組件●publicJTextArea():創(chuàng)建一個空文本域?!駊ublicJTextArea(Stringtext):創(chuàng)建一個默認顯示指定文本的文本域.●publicJTextArea(introws,intcolumns):創(chuàng)建一個具有指定行數和列數的空文本域?!駊ublicJTextArea(Documentdoc):創(chuàng)建一個具有指定文檔模型的空文本域?!駊ublicJTextArea(Documentdoc,StringText,introws,intcolumns):創(chuàng)建一個具有指定文檔模型、默認文本、指定行數和列數的文本域。使用常用組件按鈕組件1.普通按鈕組件(JButton)JButton是最簡單的按鈕組件,只是在按下和釋放兩個狀態(tài)之間切換。開發(fā)者可以通過編寫程序捕獲按下并釋放的動作執(zhí)行一些操作,從而完成按鈕組件和用戶之間的交互。2.單選按鈕組件(JRadioButton)JRadioButton類的對象用于實現一個單選按鈕,可以單獨使用,也可以與ButtonGroup類配合使用。使用常用組件按鈕組件3.復選框組件(JCheckBox)JCheckBox類的對象用于實現一個復選框。與單選按鈕類似,復選框也用于提供多項選擇,單擊該組件可在被勾選和取消勾選兩種狀態(tài)之間進行切換。不同的是,在一組復選框組件中,每個復選框都提供被勾選與取消勾選兩種狀態(tài),允許用戶進行多項選擇。使用常用組件列表組件12下拉列表框組件(JComboBox)JComboBox類的對象用于實現一個下拉列表框,在初始狀態(tài)下隱藏所有的列表項,在被單擊時通過下拉列表方式顯示列表項,一般只允許用戶選擇一個可選項。列表框組件(JList)JList類的對象用于實現一個列表框,通過類似瀏覽器滾動條的滾動框顯示列表項,允許用戶選擇一個或多個列表項。項目總結感謝觀看第六章Java開發(fā)綜合實戰(zhàn)GUI事件處理01認識事件處理機制認識事件處理機制事件處理模式12事件對象事件對象是指被封裝在GUI組件上發(fā)生的特定事件的類對象,通常是用戶進行的一次操作,如單擊按鈕、按下按鍵等。事件源能夠產生事件的對象都可以被稱為事件源,通常是產生事件的組件,如文本框、按鈕、下拉列表等。認識事件處理機制事件處理模式3事件監(jiān)聽器事件監(jiān)聽器負責監(jiān)聽事件源上發(fā)生的事件,以便對發(fā)生的事件進行處理。事件源通過調用相應的方法將某個對象注冊為自己的監(jiān)聽器。例如,對于文本框,這個方法是addActionListener(監(jiān)聽器)。認識事件處理機制事件處理模式4事件處理器事件處理器負責接收事件對象并進行相應的處理,被包含在一個事件監(jiān)聽器類中。事件監(jiān)聽器實質上就是一個實現特定類型監(jiān)聽器接口的類對象,為了處理事件源發(fā)生的事件,監(jiān)聽器這個對象會自動調用一個方法來處理事件。認識事件處理機制事件處理模式上述4個概念彼此之間聯系緊密,在整個事件處理機制中起著非常重要的作用。事件處理模式如圖6-1所示。認識事件處理機制事件處理模式綜上所述,在程序中,如果要實現事件的監(jiān)聽處理機制,首先要定義一個實現了事件監(jiān)聽器接口的類,如ActionListener類。然后通過addActionListener()方法為事件源注冊事件監(jiān)聽器對象。當事件源發(fā)生事件并產生事件對象時,便會觸發(fā)事件監(jiān)聽器對象,由事件監(jiān)聽器調用相應的方法來處理相應的事件。認識事件處理機制事件類當發(fā)生一個事件時,該事件用一個事件對象表示,事件對象有對應的事件類。不同的事件類用于描述不同類型的用戶操作。Java將事件分為兩個類別:低級事件與語義事件。絕大部分與圖形用戶界面有關的事件類位于java.awt.event包中,其中包含了各種事件類別的監(jiān)聽接口。認識事件處理機制事件類1低級事件低級事件是指來自鍵盤、鼠標和與窗口操作有關的事件。例如,關閉窗口、移動鼠標獲取焦點或按下按鍵等。java.awt.event包中包含的低級事件類如表6-1所示。認識事件處理機制事件類2語義事件語義事件是指與組件有關的事件。例如,單擊按鈕、在文本框中輸入文本、拖動滾動條、選擇列表項等。java.awt.event包中常用的語義事件類如表6-2所示。02常用事件常用事件Java中的常用事件包括窗口事件、鼠標事件、鍵盤事件、動作事件、選項事件、焦點事件和文檔事件。每個事件類都對應一個監(jiān)聽器接口,比如窗口事件類WindowEvent對應WindowListener接口。一個類只要實現了某個監(jiān)聽器接口就是一個監(jiān)聽器類了。常用事件窗口事件(WindowEvent)大部分圖形用戶界面應用程序需要使用Window(窗口)對象作為最外層的容器,Window對象可以發(fā)生窗口事件,如窗口的打開、關閉、激活、圖標化(最小化)等。在應用程序中,觸發(fā)窗口事件時,WindowEvent類將創(chuàng)建一個窗口事件對象。該對象調用getWindow()方法獲取發(fā)生窗口事件的窗口。常用事件窗口事件(WindowEvent)WindowListener接口中有7個不同的方法,如表6-3所示,當不同的窗口事件被觸發(fā)時,窗口監(jiān)聽器調用不同的方法。常用事件窗口事件(WindowEvent)常用事件(Adopter)事件適配器在Java中,當一個類實現一個接口時,必須實現接口中所有的方法,即使當前操作不需要其中的某些方法也需要實現,這在實際應用中會導致代碼冗余,如上述案例所示。在這種情況下,可以使用適配器的設計模式代替接口來處理事件,在實現類和接口之間增加一個過渡的抽象類,子類繼承抽象類就可以根據自己的需要重寫需要的方法。常用事件(Adopter)事件適配器Java在事件處理中提供了很多Adapter(適配器)類,當處理事件的接口多于一個方法時,Java相應地就提供一個Adapter類,方便用戶進行事件處理的實現,如WindowAdapter、MouseAdapter、KeyAdapter、MouseMotionAdapter和FocusAdapter類。常用事件鼠標事件(MouseEvent)在圖形用戶界面中,用戶會經常使用鼠標在組件上進行各種操作,例如,按下、釋放、單擊、拖動等,這些操作被定義為鼠標事件。幾乎所有的組件都可以產生鼠標事件,在JDK中使用MouseEvent類表示鼠標事件,該事件會使MouseEvent類自動創(chuàng)建一個事件對象。常用事件鼠標事件(MouseEvent)在處理鼠標事件時,首先需要實現MouseListener接口(或MouseMotionListener接口)或繼承適配器MouseAdapter類(或MouseMotionAdapter類)來定義監(jiān)聽器,然后調用addMouseListener(方法(或addMouseMotionListener()方法)將監(jiān)聽器綁定到事件源上。常用事件鼠標事件(MouseEvent)MouseListener接口中有5個不同的方法,如表6-4所示,用于處理5種不同的鼠標事件。常用事件鼠標事件(MouseEvent)鼠標的操作分為單擊、雙擊、右擊和中鍵(滾輪)單擊。MouseEvent類中定義了很多常量和方法來標識鼠標的操作,如表6-5所示。常用事件鼠標事件(MouseEvent)常用事件鼠標事件(MouseEvent)MouseMotionListener接口中有2個方法,如表6-6所示,分別用于處理拖動鼠標和移動鼠標事件。常用事件鍵盤事件(KeyEvent)鍵盤操作是常用的用戶與網頁進行交互的方式,如按下、釋放或敲擊鍵盤按鍵等,這些操作被定義為鍵盤事件。JDK使用KeyEvent類表示鍵盤事件,處理KeyEvent事件的監(jiān)聽器對象需要實現KeyListener接口或者繼承KeyAdapter類。常用事件鍵盤事件(KeyEvent)KeyListener接口中有3個方法,如表6-7所示。常用事件鍵盤事件(KeyEvent)鍵盤上的按鍵眾多,KeyEvent類提供了一些方法用于標識觸發(fā)鍵盤事件的按鍵,如表6-8所示。常用事件動作事件(ActionEvent)動作事件不代表某個具體的動作,只是表示一個動作發(fā)生了,不關心使用哪種方式觸發(fā)的事件。JDK使用ActionEvent類表示動作事件,文本框、按鈕、菜單項、密碼框和單選按鈕都是ActionEvent事件的事件源,觸發(fā)ActionEvent事件。常用事件動作事件(ActionEvent)在處理動作事件時,首先需要實現ActionListener接口定義監(jiān)聽器,然后調用addActionListener()方法將實現ActionListener接口的類的實例注冊為事件源的監(jiān)聽器。常用事件動作事件(ActionEvent)ActionListener接口中只定義了一個方法publicvoidactionPerformed(ActionEvente),在發(fā)生操作時被調用。ActionEvent類的常用方法如表6-9所示。常用事件動作事件(ActionEvent)常用事件選項事件(ltemEvent)在應用程序中,勾選復選框或取消勾選復選框,就會觸發(fā)選項事件。JDK使用ItemEvent類表示選項事件。除了復選框,下拉列表框、菜單項等組件都可以觸發(fā)ItemEvent事件。在處理選項事件時,首先需要實現ItemListener接口定義監(jiān)聽器,然后調用addItemListener()方法將實現ItemListener接口的類的實例注冊為事件源的監(jiān)聽器。常用事件選項事件(ltemEvent)ItemListener接口中只有一個方法publicvoiditemStateChanged(ItemEvente),在選擇項發(fā)生改變時被調用。ItemEvent類的常用方法如表6-10所示。常用事件選項事件(ltemEvent)常用事件焦點事件(FocusEvent)FocusEvent類表示焦點事件,每個GUI組件都能作為焦點事件的事件源,也就是每個組件在獲得焦點或者失去焦點時都會產生焦點事件。例如,將焦點移出文本框,或者將焦點返回文本框等。常用事件焦點事件(FocusEvent)在處理焦點事件時,首先需要實現FocusListener接口定義監(jiān)聽器,然后調用addFocusListener()方法將實現FocusListener接口的類的實例注冊為事件源的監(jiān)聽器。FocusListener接口中有2個方法,用于處理焦點改變的事件,如表6-11所示。常用事件焦點事件(FocusEvent)常用事件焦點事件(FocusEvent)焦點事件有持久性和暫時性兩個級別。當焦點直接從一個組件移到另一個組件的,會發(fā)生持久性焦點變更事件;如果失去焦點則是暫時性的,例如,在窗口被拖放時會失去焦點,而拖放結束后就會自動恢復焦點,這就是暫時性焦點變更事件。常用事件文檔事件(DocumentEvent)DocumentEvent類用于處理文檔事件。能夠產生文檔事件的事件源有文本框(JTextField)、密碼框(JPasswordField)、文本域(JTextArea),但這些組件不能直接觸發(fā)文檔事件。用戶在進行文本編輯操作時,文本內容發(fā)生變化,使得這些組件所維護的文檔模型中的數據發(fā)生變化,從而觸發(fā)文檔事件。常用事件文檔事件(DocumentEvent)在處理文檔事件時,首先需要實現DocumentListener接口定義監(jiān)聽器,然后調用addDocumentListener()方法將實現DocumentListener接口的類的實例注冊為事件源的監(jiān)聽器。DocumentListener接口被包含在javax.swing.event包中,定義了3個方法,用于處理文檔內容發(fā)生改變的事件,如表6-12所示。常用事件文檔事件(DocumentEvent)項目總結感謝觀看第七章Java開發(fā)綜合實戰(zhàn)I/O操作01使用File類操作文件和目錄使用File類操作文件和目錄創(chuàng)建File對象使用File類的構造方法可以創(chuàng)建一個File對象,File對象既可以表示文件,也可以表示目錄。要構造一個File對象,需要傳入文件路徑,可以是絕對路徑,也可以是相對路徑。語法格式有如下3種。使用File類操作文件和目錄創(chuàng)建File對象該構造方法使用參數pathname指定包含文件名的路徑。Windows平臺使用“\”作為路徑分隔符,在Java字符串中需要用轉義字符"\\"表示"\",也可以直接使用/進行路徑分隔。Linux平臺使用“/”作為路徑分隔符。(1)File(Stringpathname)。使用File類操作文件和目錄創(chuàng)建File對象該構造方法通過指定父路徑parent和子路徑child傳入文件路徑。父路徑是磁盤根目錄或磁盤中的某個文件夾,如D:/或D:/workspace/。子路徑是包含文件類型后綴的文件名,如stars.txt。(2)File(Stringparent,Stringchild)。使用File類操作文件和目錄創(chuàng)建File對象該構造方法根據磁盤中的某個文件夾f(稱為父File對象)和要創(chuàng)建的文件名child(稱為子File對象)創(chuàng)建File對象。例如,上面的代碼也可以寫成如下形式:(3)File(Filef,Stringchild)。使用File類操作文件和目錄獲取文件屬性在創(chuàng)建File對象后,可以調用File類的方法獲取文件屬性,如表7-1所示。使用File類操作文件和目錄獲取文件屬性在這里要提醒讀者注意的是,File對象有3個表示路徑的方法:第1個是getPath),用于獲取構造方法傳入的路徑字符串;第2個是getAbsolutePath(),用于獲取絕對路徑;第3個是getCanonicalPath(),與絕對路徑類似,不同的是,其獲取的是規(guī)范路徑。使用File類操作文件和目錄創(chuàng)建和刪除文件1創(chuàng)建文件使用File類創(chuàng)建File對象后,如果File對象指向的文件不存在,則可以調用createNewFile()方法創(chuàng)建文件,語法格式如下:使用File類操作文件和目錄創(chuàng)建和刪除文件2刪除文件使用File類的delete()方法可以刪除指定的文件,語法格式如下:使用File類操作文件和目錄創(chuàng)建和刪除文件夾使用File對象可以指向一個文件夾,并調用mkdir()方法創(chuàng)建文件夾。如果要創(chuàng)建多級目錄,則調用mkdirs()方法。●booleanmkdir():創(chuàng)建一個文件夾,路徑名由當前File對象指定。若創(chuàng)建成功,則返回true,否則返回false?!馼ooleanmkdirs():創(chuàng)建多級目錄,路徑名由當前File對象指定。使用File類操作文件和目錄創(chuàng)建和刪除文件夾與文件操作類似,無論是創(chuàng)建文件夾還是刪除文件夾,都需要先調用exists()方法判斷文件夾是否存在。如果要刪除文件夾,則可以調用File類的delete()方法。使用File類操作文件和目錄遍歷目錄1list()方法該方法使用字符串數組返回當前File對象表示的目錄中所有的文件和文件夾名稱。如果當前File對象不是目錄,則返回null。語法格式如下:publicString[]list()使用File類操作文件和目錄遍歷目錄2listFiles()方法該方法的功能與list()方法相同,不同的是,該方法會列出文件的完整路徑,返回值為一個File對象數組。此外,該方法還提供了兩個重載方法,可以過濾不想要的文件和目錄,語法格式如下:02讀/寫文件內容讀/寫文件內容流的概念Java以數據流的形式處理輸入和輸出數據。流是一組有序的字節(jié)或字符集合,根據流的運動方向,流可以被分為輸入流和輸出流兩種。以計算機內存為參照物,輸入流是指從計算機外設讀入內存的數據序列;輸出流是指從內存輸出到計算

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論