Java程序設(shè)計(jì)教程(第2版) 課件 張延軍 第8、9章 Java IO技術(shù)、JavaGUI編程技術(shù)_第1頁(yè)
Java程序設(shè)計(jì)教程(第2版) 課件 張延軍 第8、9章 Java IO技術(shù)、JavaGUI編程技術(shù)_第2頁(yè)
Java程序設(shè)計(jì)教程(第2版) 課件 張延軍 第8、9章 Java IO技術(shù)、JavaGUI編程技術(shù)_第3頁(yè)
Java程序設(shè)計(jì)教程(第2版) 課件 張延軍 第8、9章 Java IO技術(shù)、JavaGUI編程技術(shù)_第4頁(yè)
Java程序設(shè)計(jì)教程(第2版) 課件 張延軍 第8、9章 Java IO技術(shù)、JavaGUI編程技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8周JavaIO技術(shù)2023年11Java

I/O技術(shù)2常見(jiàn)IO應(yīng)用一4讓我們一起來(lái)編程學(xué)習(xí)提綱3常見(jiàn)IO應(yīng)用二21.JavaI/O技術(shù)在Java中,數(shù)據(jù)的輸入和輸出都是以流(Stream)的方式來(lái)處理。JDK中與輸入輸出相關(guān)的包和類(lèi)都集中存放在java.io包中,涉及12個(gè)接口、51個(gè)類(lèi)、17個(gè)異常。我們用不用逐個(gè)研究學(xué)習(xí)呢?顯然不用,API幫助文檔相當(dāng)于一本字典,我們只需迅速查找到自己要的信息即可。java.io包其中包含5個(gè)重要的抽象類(lèi):InputStream、OutputStream、Reader、Writer和File。幾乎所有與I/O相關(guān)的類(lèi)都繼承了這5個(gè)類(lèi)。利用這些類(lèi)提供的方法,Java可以方便地實(shí)現(xiàn)復(fù)雜的文件管理和多種I/O操作。1.1JavaI/O技術(shù)簡(jiǎn)介

31.JavaI/O技術(shù)Java中的流按單位可分為字節(jié)流和字符流。按Java的命名慣例,凡是以InputStream結(jié)尾的類(lèi)均為字節(jié)輸入流,以O(shè)utputStream結(jié)尾的類(lèi)均為字節(jié)輸出流,凡是以Reader結(jié)尾的類(lèi)均為字符輸入流,以Writer結(jié)尾的類(lèi)均為字符輸出流。1.2I/O流的分類(lèi)41.JavaI/O技術(shù)按流的方向可分為輸入流和輸出流。輸入流是任何有能力產(chǎn)出數(shù)據(jù)的數(shù)據(jù)源,是從鍵盤(pán)、磁盤(pán)文件或網(wǎng)絡(luò)等流向程序的數(shù)據(jù)流。輸出流是任何有能力接收數(shù)據(jù)的接收源,是從程序流向顯示器、打印機(jī)、磁盤(pán)文件、網(wǎng)絡(luò)的數(shù)據(jù)流。注意:判斷是輸入流還是輸出流,請(qǐng)以程序?yàn)閰⒄瘴?,否則會(huì)出現(xiàn)混亂。1.2I/O流的分類(lèi)51.JavaI/O技術(shù)Java中最基本的流是字節(jié)流。Java通過(guò)InputStream、OutputStream類(lèi)及其子類(lèi)提供了字節(jié)流的讀寫(xiě)方法。為了方便處理雙字節(jié)的Unicode字符,Java通過(guò)Reader、Writer類(lèi)及其子類(lèi)提供了字符流的讀寫(xiě)等操作。為了進(jìn)一步提高效率,Java通過(guò)BufferedReader、BufferedWriter等類(lèi)提供了帶緩沖區(qū)的字符串讀寫(xiě)。1.2I/O流的分類(lèi)61.JavaI/O技術(shù)在JDK1.4以前,Java的IO操作集中在java.io這個(gè)包中,是基于字節(jié)流或字符流的阻塞(blocking)API。IO流的好處是簡(jiǎn)單易用,缺點(diǎn)是效率較低。然而,一些對(duì)性能要求較高的應(yīng)用,尤其是服務(wù)器端應(yīng)用,往往需要一個(gè)更為有效的方式來(lái)處理IO。從JDK1.4開(kāi)始,JDK提供了NIO(NewI/O),這是一個(gè)基于緩沖區(qū)和塊的非阻塞(NonBlocking)IO操作的API。NIO效率很高,但編程比較復(fù)雜。JavaNIO由以下幾個(gè)核心部分組成:Channels、Buffers和Selectors。1.3NIO71Java

I/O技術(shù)2常見(jiàn)IO應(yīng)用一4讓我們一起來(lái)編程學(xué)習(xí)提綱3常見(jiàn)IO應(yīng)用二82.常見(jiàn)I/O應(yīng)用一File類(lèi)可以用來(lái)獲取或處理與磁盤(pán)文件和文件夾相關(guān)等信息和操作,但不提供文件內(nèi)容的存取。文件內(nèi)容的存取功能一般由FileInputStream、FileOutputStream、FileReader、FileWriter等類(lèi)實(shí)現(xiàn)。File類(lèi)是對(duì)文件和文件夾的一種抽象表示(引用或指針)。File類(lèi)的對(duì)象可能指向一個(gè)存在的文件或文件夾,也可能指向一個(gè)不存在的文件或文件夾。2.1File類(lèi)的應(yīng)用92.常見(jiàn)I/O應(yīng)用一文件或文件夾的路徑分為絕對(duì)路徑和相對(duì)路徑。路徑分隔符:Windows操作系統(tǒng)下為“\”,Unix/Linux操作系統(tǒng)下為“/”。磁盤(pán)文件的絕對(duì)定位:盤(pán)符:\\文件夾1\\文件夾2…\\文件名。本資源定位方法缺乏靈活性,不適用于網(wǎng)絡(luò)環(huán)境編程。Eclispe項(xiàng)目下文件的相對(duì)定位:相對(duì)路徑是相對(duì)項(xiàng)目文件夾開(kāi)始定位,src\\包\\…\\包\\文件名;絕對(duì)路徑:\\項(xiàng)目名稱(chēng)\\src\\包\\…\\文件名。采用本方法項(xiàng)目開(kāi)發(fā)階段沒(méi)有問(wèn)題,但項(xiàng)目發(fā)布后沒(méi)有“src”文件夾就會(huì)出現(xiàn)“文件找不到”的錯(cuò)誤。

2.1File類(lèi)的應(yīng)用102.常見(jiàn)I/O應(yīng)用一查閱API幫助文檔,掌握File類(lèi)的常用構(gòu)造方法和常用方法:publicFile(Stringpathname)publicbooleanexists()publicbooleanisDirectory()publiclonglastModified():返回毫秒數(shù)publiclonglength()publicStringgetName()、getParent()、getPath():2.1File類(lèi)的應(yīng)用112.常見(jiàn)I/O應(yīng)用一publicFile[]listFiles()publicbooleanmkdirs()publicbooleanrenameTo(Filedest)publicbooleandelete()

2.1File類(lèi)的應(yīng)用122.常見(jiàn)I/O應(yīng)用一【編程實(shí)踐】1.獲取指定文件的信息:是否存在、文件名、路徑、文件長(zhǎng)度、最后修改時(shí)間、是否文件夾。2.文件改名、刪除3.建立文件夾:d:\hb\hd\hdc4.顯示某文件夾的內(nèi)容2.1File類(lèi)的應(yīng)用132.常見(jiàn)I/O應(yīng)用一FileInputStream用于從本地文件系統(tǒng)中的一個(gè)文件中讀取字節(jié)數(shù)據(jù)。FileOutputStream:用于將數(shù)據(jù)寫(xiě)入文件字節(jié)輸出流。

2.2利用字節(jié)流完成文件的讀寫(xiě)142.常見(jiàn)I/O應(yīng)用一查閱API幫助文檔,掌握FileInputStream、FileOutputStream類(lèi)的常用構(gòu)造方法和常用方法:publicFileInputStream(Filefile)throwsFileNotFoundExceptionpublicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicint

read()throwsIOException:返回下一個(gè)字節(jié)的數(shù)據(jù),如果到達(dá)文件結(jié)尾則返回-1。publicvoidwrite(intb)throwsIOException2.2利用字節(jié)流完成文件的讀寫(xiě)152.常見(jiàn)I/O應(yīng)用一【編程實(shí)踐】用字節(jié)流的方式將OO.png復(fù)制到D:\【編程步驟】1.建立文件輸入字節(jié)流對(duì)象,建立文件輸出字節(jié)流對(duì)象。2.從輸入流循環(huán)讀取字節(jié),寫(xiě)入到輸出流中3.關(guān)閉輸入流和輸出流4.注意捕獲異常處理或聲明拋出的異常2.2利用字節(jié)流完成文件的讀寫(xiě)162.常見(jiàn)I/O應(yīng)用一我們可以以字符串、輸入流、文件等作為參數(shù)來(lái)直接構(gòu)建Scanner對(duì)象,然后就可以逐行逐字(根據(jù)正則表達(dá)式來(lái)分隔)來(lái)掃描整個(gè)文本,并對(duì)掃描后的結(jié)果做想要的處理。PrintStream在OutputStream基礎(chǔ)之上提供了增強(qiáng)的功能,即可以方便地輸出各種類(lèi)型的數(shù)據(jù)的格式化表示形式。

publicstaticfinalPrintStreamout2.3利用Scanner和PrintStream完成文件的讀寫(xiě)172.常見(jiàn)I/O應(yīng)用一查閱API幫助文檔,Scanner類(lèi)中需要重點(diǎn)掌握常用構(gòu)造方法和常用方法:publicScanner(Filesource)throwsFileNotFoundExceptionpublicbooleanhasNextLine()publicStringnextLine()PrintStream類(lèi)中需要重點(diǎn)掌握常用構(gòu)造方法和常用方法:publicPrintStream(Filefile)publicPrintStream(StringfileName)publicvoidprintln(Stringx)2.3利用Scanner和PrintStream完成文件的讀寫(xiě)182.常見(jiàn)I/O應(yīng)用一【編程實(shí)踐】將九九乘法表輸出到一個(gè)文本文件。【編程實(shí)踐】1.以源文件sg.txt為參數(shù),建立Scanner對(duì)象,以目標(biāo)文件為參數(shù)建立PrintSream對(duì)象2.從輸入流循環(huán)讀取一行字符串,寫(xiě)入到輸出流中。3.關(guān)閉輸入流和輸出流4.注意捕獲異常處理或聲明拋出的異常2.3利用Scanner和PrintStream完成文件的讀寫(xiě)191Java

I/O技術(shù)2常見(jiàn)IO應(yīng)用一4讓我們一起來(lái)編程學(xué)習(xí)提綱3常見(jiàn)IO應(yīng)用二203.常見(jiàn)I/O應(yīng)用二DataInputStream類(lèi)能夠使Java應(yīng)用程序以一種與機(jī)器無(wú)關(guān)的方式,直接從底層輸入流讀取Java的八種基本類(lèi)型數(shù)據(jù)。而DataOutputStream類(lèi)能夠?qū)ava八種基本類(lèi)型數(shù)據(jù)寫(xiě)出到一個(gè)輸出流,然后可以用DataInputStream輸入流讀取這些數(shù)據(jù)。3.1基本類(lèi)型數(shù)據(jù)的讀寫(xiě)213.常見(jiàn)I/O應(yīng)用二查閱API幫助文檔,掌握DataInputStream、DataOutputStream類(lèi)的常用構(gòu)造方法和常用方法:publicDataInputStream(InputStreamin)publicfinaldoublereadDouble()throwsIOExceptionpublicDataOutputStream(OutputStreamout)publicfinalvoidwriteDouble(doublev)throwsIOException

3.1基本類(lèi)型數(shù)據(jù)的讀寫(xiě)223.常見(jiàn)I/O應(yīng)用二【編程要求】將100個(gè)隨機(jī)生成的小數(shù)(0-1000之間)寫(xiě)入文件,要求以’#’分隔。然后從該文件依次讀出每一個(gè)小數(shù)。編程提示:DataOutputStream類(lèi)的相關(guān)方法實(shí)現(xiàn)。3.1基本類(lèi)型數(shù)據(jù)的讀寫(xiě)233.常見(jiàn)I/O應(yīng)用二通常狀況下,當(dāng)Java程序運(yùn)行結(jié)束時(shí),JVM內(nèi)存中的相關(guān)對(duì)象將隨之銷(xiāo)毀。如果我們想將對(duì)象以某種方式保存下來(lái),在程序的下次運(yùn)行時(shí)再恢復(fù)該對(duì)象,可以通過(guò)對(duì)象的序列化和反序列化來(lái)實(shí)現(xiàn)。序列化指將內(nèi)存中對(duì)象的相關(guān)信息(除transient以外的全部屬性值等)進(jìn)行編碼,然后寫(xiě)到外存的過(guò)程。注意:用transient修飾的對(duì)象變量將不會(huì)被序列化。3.2序列化與反序列化243.常見(jiàn)I/O應(yīng)用二反序列化的順序正好相反,反序列化將序列化的的對(duì)象信息從外存中讀取,并重新解碼組裝為對(duì)象的過(guò)程。Java提供了ObjectInputStream/ObjectOutputStream類(lèi)來(lái)實(shí)現(xiàn)序列化與反序列化。只有實(shí)現(xiàn)Java.io.Serializable接口的類(lèi)的對(duì)象才能被序列化和反序列化,否則會(huì)出現(xiàn)java.io.NotSerializableException。3.2序列化與反序列化253.常見(jiàn)I/O應(yīng)用二查閱API幫助文檔,ObjectInputStream、ObjectOutputStream類(lèi)中需要重點(diǎn)掌握常用構(gòu)造方法和常用方法:publicObjectInputStream(InputStreamin)throwsIOExceptionpublicfinalObjectreadObject()publicObjectOutputStream(OutputStreamout)throwsIOExceptionpublicfinalvoidwriteObject(Objectobj)throwsIOException3.2序列化與反序列化263.常見(jiàn)I/O應(yīng)用二【編程要求】

Student類(lèi)(sno,sname,password,sex)。將password設(shè)置為transient,要求覆蓋父類(lèi)Object的toString()方法。至少生成5個(gè)Student對(duì)象,sno為鍵,Student對(duì)象為值,放入到HashMap<String,Student>。將HashMap序列化到一個(gè)文件d:\\student.dat(要求不序列化password)。從d:\\student.dat中反序列化得到HashMap<String,Student>,并輸出。3.2序列化與反序列化271Java

I/O技術(shù)2常見(jiàn)IO應(yīng)用一4讓我們一起來(lái)編程學(xué)習(xí)提綱3常見(jiàn)IO應(yīng)用二284.讓我們一起來(lái)編程【編程作業(yè)】單詞統(tǒng)計(jì)(WordCount.java)編程要求:給定英文文本文件,統(tǒng)計(jì)每一個(gè)英文單詞出現(xiàn)的次數(shù),要求按字母順序排列。編程提示:用TreeMap<String,Integer>實(shí)現(xiàn)。循環(huán)遍歷該文本文件的每一個(gè)字符串,如果TreeMap中已經(jīng)存儲(chǔ)該字符串,則出現(xiàn)次數(shù)加1,否則,存儲(chǔ)該字符串,出現(xiàn)次數(shù)為1。"\\s|,|\\.|\"|“|”|\\)|\\("4.1利用Scanner和PrintStream完成文件的讀寫(xiě)293.常見(jiàn)I/O應(yīng)用二ApachePOI是Apache軟件基金會(huì)的開(kāi)放源碼程序庫(kù)。POI提供通過(guò)Java語(yǔ)言對(duì)MicrosoftOffice文件進(jìn)行讀寫(xiě)的API,支持Office97-2008文檔格式(包括XLSX,DOCXandPPTX)。下載地址:/,其框架結(jié)構(gòu)如下:

HSSF:提供讀寫(xiě)Excel格式文件的功能。HWPF:提供讀寫(xiě)Word格式文件的功能。HSLF:提供讀寫(xiě)PowerPoint格式文件的功能。HDGF:提供讀寫(xiě)Visio格式文件的功能。3.3利用POI讀寫(xiě)Excel敬請(qǐng)批評(píng)指正,謝謝!2023年第9周JavaGUI編程技術(shù)321JavaGUI技術(shù)簡(jiǎn)介2JavaGUI相關(guān)接口和類(lèi)4讓我們一起來(lái)編程學(xué)習(xí)提綱3利用WindowBuilder進(jìn)行swing應(yīng)用開(kāi)發(fā)9.3

利用WindowBuilderPro進(jìn)行swing應(yīng)用開(kāi)發(fā)

331.JavaGUI編程技術(shù)簡(jiǎn)介Java的GUI庫(kù)最主要的有三種:AWT、swing和SWT/JFace。AWT和swing是Sun隨JDK一起發(fā)布的,無(wú)需安裝直接可以使用,SWT/JFace需要跟隨Eclipse安裝或單獨(dú)安裝。341.JavaGUI編程技術(shù)簡(jiǎn)介AWT(AbstractWindowToolkit)最原始最基礎(chǔ)的JavaGUI工具包。AWT相關(guān)的類(lèi)和接口集中存放在java.awt包中。AWT提供了創(chuàng)建GUI的工具包,包括了基礎(chǔ)組件、布局管理器、繪圖、事件處理等。AWT主要由C語(yǔ)言開(kāi)發(fā),靈活性差,運(yùn)行時(shí)系統(tǒng)消耗資源多,屬重量級(jí)的Java組件,很難做到美觀,功能也比較簡(jiǎn)陋。1.1AWT351.JavaGUI編程技術(shù)簡(jiǎn)介針對(duì)AWT存在問(wèn)題,Sun公司1998年對(duì)AWT進(jìn)行了擴(kuò)展,開(kāi)發(fā)出了swing組件。swing相關(guān)的類(lèi)和接口集中存放在javax.swing包中。swing中大部分是輕量級(jí)組件,由純Java代碼實(shí)現(xiàn),沒(méi)有本地代碼,不依賴(lài)操作系統(tǒng)的支持,采用可插入的外觀感覺(jué)。swing組件包括了AWT中已經(jīng)提供的GUI組件,同時(shí)包括一套高層次的GUI組件,swing繼續(xù)使用AWT的事件處理模型。1.2swing

361.JavaGUI編程技術(shù)簡(jiǎn)介1.2swing

371.JavaGUI編程技術(shù)簡(jiǎn)介SWT/JFace是IBM為開(kāi)發(fā)EclipseIDE編寫(xiě)的一組GUIAPI,跟隨Eclipse安裝或單獨(dú)安裝。至今為止,SWT無(wú)論是在性能和外觀上,都超越了SUN公司提供的AWT和SWING。JFace是對(duì)SWT的一個(gè)封裝,它豐富、優(yōu)化了SWT的功能。1.3SWT/JFace381.JavaGUI編程技術(shù)簡(jiǎn)介為簡(jiǎn)化GUI應(yīng)用開(kāi)發(fā)的難度,提高開(kāi)發(fā)的效率,可以象在VisualStudio中一樣通過(guò)拖曳控件來(lái)編寫(xiě)GUI程序,VisualEditor、Jigloo、Matisse、WindowBuilderPro等JavaGUI可視化開(kāi)發(fā)工具也相繼開(kāi)發(fā)并推廣。本課程將采用WindowBuilder來(lái)協(xié)助GUI應(yīng)用開(kāi)發(fā)。1.4GUI設(shè)計(jì)工具391.JavaGUI編程技術(shù)簡(jiǎn)介WindowBuilder是一款免費(fèi)的、開(kāi)源的、非常好用的Eclipse插件。在WindowBuilder設(shè)計(jì)視圖中通過(guò)拖拽和設(shè)置屬性,可以輕松添加眾多組件并迅速創(chuàng)建復(fù)雜的窗口,同時(shí)會(huì)自動(dòng)生成Java代碼。然后在代碼視圖中在WindowBuilder生成代碼的基礎(chǔ)上,修改和增加功能。WindowBuilder可以保證代碼和界面同步更新??傊肳indowBuilder可以有效降低JavaGUI編程難度,提高效率。1.4GUI設(shè)計(jì)工具40學(xué)習(xí)提綱9.3

利用WindowBuilderPro進(jìn)行swing應(yīng)用開(kāi)發(fā)

1JavaGUI技術(shù)簡(jiǎn)介2JavaGUI相關(guān)接口和類(lèi)4讓我們一起來(lái)編程3利用WindowBuilder進(jìn)行swing應(yīng)用開(kāi)發(fā)412.JavaGUI相關(guān)接口和類(lèi)一個(gè)Java圖形界面,由各種不同類(lèi)型的“元素”組成,例如:窗口、菜單欄、對(duì)話(huà)框、標(biāo)簽、按鈕、文本框等等,這些“元素”統(tǒng)一被稱(chēng)為組件(Component)。組件按照不同的功能,可分為頂層容器、中間容器、基本組件?;窘M件不能獨(dú)立地顯示出來(lái),必須將組件放在特定的對(duì)象―容器中才能顯示出來(lái)。每個(gè)容器類(lèi)都和一個(gè)布局管理器相關(guān)聯(lián),以確定其中組件的布局。422.JavaGUI相關(guān)接口和類(lèi)頂層容器:屬于窗口類(lèi)組件,可以獨(dú)立顯示。圖形界面至少要有一個(gè)頂級(jí)容器。swing頂層容器包括JFrame、JApplet、JDialog、JWindow。JFrame類(lèi)是最常用的頂級(jí)容器,帶有窗口標(biāo)題,可最大化、最小化、還原等。JFrame默認(rèn)的布局管理器是BorderLayout。publicclassGUIModelextends

JFrame2.1組件類(lèi)432.JavaGUI相關(guān)接口和類(lèi)中間容器:因?yàn)镚ridLayout、BorderLayout等布局中一個(gè)區(qū)域只能入放置一個(gè)組件,所以通常要將多個(gè)組件放入一個(gè)中間容器,再將這個(gè)中間容器放入頂級(jí)容器或其它中間容器。常見(jiàn)中間容器包括JPanel(輕量級(jí)面板)、JScrollPane(帶有滾動(dòng)條的面板)、JSplitPane(分隔面板)、JTabbedPane(選項(xiàng)卡面板)、JLayeredPane(多層面板)、JToolBar(工具欄)、JMenuBar(菜單欄)、JPopupMenu(彈出菜單)、JInternalFrame(內(nèi)部窗口)等。JPanel:是一種無(wú)邊框的中間容器,是最常用的中間容器。JPanel默認(rèn)的布局管理器是FlowLayout。2.2swing442.JavaGUI相關(guān)接口和類(lèi)絕大部分swing組件類(lèi)的名稱(chēng)和對(duì)應(yīng)AWT組件類(lèi)的名稱(chēng)基本一致,只要在原來(lái)的AWT組件類(lèi)名前添加“J”即可。Swing常見(jiàn)組件包括:JLabel(文本標(biāo)簽)、JButton(按鈕)、JTextField(單行文本框)、JPasswordField(單行密碼框)、JTextArea(多行文本框)、JRadioButton(單選按鈕)、JCheckbox(復(fù)選按鈕)、JComboBox(下拉式列表)、JList(列表)、JScrollbar(滾動(dòng)條)、JSlider(滑塊)、JFileChooser(文件選擇框)、JColorChooser(顏色選擇框)、JTable(表格)、JTree(樹(shù))、JProgressBar(進(jìn)度條)等。2.2swing452.JavaGUI相關(guān)接口和類(lèi)462.JavaGUI相關(guān)接口和類(lèi)AWT提供了FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout等布局管理器類(lèi)來(lái)管理各種組件在容器中的放置狀態(tài)。當(dāng)一個(gè)容器被創(chuàng)建時(shí)如果不指定布局管理器,它們就采用默認(rèn)的布局管理器。Panel的默認(rèn)的布局管理器FlowLayout。Window、Frame和Dialog默認(rèn)的布局管理器就是BorderLayout。2.2布局管理器472.JavaGUI相關(guān)接口和類(lèi)AWT提供的常見(jiàn)布局管理器介紹如下:FlowLayout(流式布局):FlowLayout是最簡(jiǎn)單的布局管理器。在FlowLayout中,你不必指定每個(gè)控件放在哪,F(xiàn)lowLayout就會(huì)根據(jù)你添加控件的順序依次從左向右放置控件,如果空間不夠,組件滿(mǎn)一行后自動(dòng)換行。2.3布局管理器

482.JavaGUI相關(guān)接口和類(lèi)BorderLayout(邊界布局):BorderLayout將容器劃分為NORTH、WEST、EAST、SOUTH、CENTER五個(gè)區(qū)域。將控件放入容器時(shí),必須指定控件放置的區(qū)域。如下圖所示,每個(gè)區(qū)域只能放一個(gè)控件,組件自動(dòng)擴(kuò)展大小以填滿(mǎn)該區(qū)域。2.3布局管理器

492.JavaGUI相關(guān)接口和類(lèi)GridLayout(網(wǎng)格布局):GridLayout將容器切割為棋盤(pán)一樣m行n列的網(wǎng)格,每個(gè)網(wǎng)格可以放置一個(gè)組件。添加到容器的組件從左向右自上而下依次放置。2.3布局管理器

502.JavaGUI相關(guān)接口和類(lèi)Java事件處理機(jī)制由事件源、事件和事件監(jiān)聽(tīng)器三部分組成。當(dāng)用戶(hù)在GUI組件上觸發(fā)一個(gè)事件(如ActionEvent),AWT將事件對(duì)象封裝傳遞給事件監(jiān)聽(tīng)器。事件源:指能產(chǎn)生AWT事件的各種GUI組件,如按鈕、菜單等。事件:指在java.awt.event包中定義的Java能夠處理的事件(以Event結(jié)尾)。事件監(jiān)聽(tīng)器:指一個(gè)實(shí)現(xiàn)了XxxListener接口或繼承了XxxAdapter抽象類(lèi)的類(lèi),負(fù)責(zé)監(jiān)聽(tīng)和處理某種特定事件XxxEvent。2.4Java事件處理機(jī)制512.JavaGUI相關(guān)接口和類(lèi)下面以JButton、ActionEvent、ActionListener為例說(shuō)明Java事件處理的實(shí)現(xiàn):建立事件監(jiān)聽(tīng)器類(lèi),該類(lèi)必須實(shí)現(xiàn)相關(guān)事件監(jiān)聽(tīng)器接口,重寫(xiě)其中的抽象方法。classHandlerimplementsActionListener。將事件源和事件監(jiān)聽(tīng)器關(guān)聯(lián)起來(lái)。在事件處理方法中編寫(xiě)事件處理代碼。publicvoidactionPerformed(ActionEvente){ //處理事件代碼

}2.4Java事件處理機(jī)制522.JavaGUI相關(guān)接口和類(lèi)【示例程序】GUIModel實(shí)現(xiàn)一個(gè)基本窗口,并進(jìn)行了相關(guān)的設(shè)置。我們只要在此基礎(chǔ)上稍加改造,在其中定義并添加中間容器和基本組件,編寫(xiě)事件處理代碼,即可完成編程任務(wù)。2.5GUI模板532.JavaGUI相關(guān)接口和類(lèi)542.JavaGUI相關(guān)接口和類(lèi)【編程要求】用純手工編程實(shí)現(xiàn):拖動(dòng)紅、綠、藍(lán)對(duì)應(yīng)的JSlider組件滑塊時(shí)右側(cè)按鈕顏色馬上隨之變化,界面要求如下。

事件源:JSlider,事件:ChangeEvent,監(jiān)聽(tīng)器接口:ChangeListener2.6顏色調(diào)整器55學(xué)習(xí)提綱1JavaGUI技術(shù)簡(jiǎn)介2JavaGUI相關(guān)接口和類(lèi)4讓我們一起來(lái)編程3利用WindowBuilder進(jìn)行swing應(yīng)用開(kāi)發(fā)563.利用WindowBuilder進(jìn)行swing應(yīng)用開(kāi)發(fā)首先判斷一下我們使用的Eclipse中是否已經(jīng)安裝了WindowBuilder插件:在Eclipse環(huán)境中new->other中是否有WindowBuilder選項(xiàng)。3.1WindowBuilder的下載和安裝

573.利用WindowBuilder進(jìn)行swing應(yīng)用開(kāi)發(fā)WindowBuilder的在線(xiàn)安裝:在Eclipse中,選擇菜單“Help->Install

New

Software……”,在彈出的對(duì)話(huà)框中WorkWith后面的文本框中粘貼與你使用Eclipse對(duì)應(yīng)版本的WindowBuilder更新地址:/windowbuilder/latest/,選擇要安裝的插件后,單擊Finish按鈕,即開(kāi)始下載插件,自動(dòng)安裝重啟Eclipse后生效。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論