




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第七章:輸入和輸由流第一節(jié):數(shù)據(jù)流的根本概念1 .在java中,把不同類型的輸入、輸出源抽象為流,其中輸入或輸出的數(shù)據(jù)成為數(shù)據(jù)流,用統(tǒng)一的接口表示.2 .數(shù)據(jù)流是指一組有順序的、有起點(diǎn)和終點(diǎn)的字節(jié)集合.程序從鍵盤接收數(shù)據(jù)或向文件中寫數(shù)據(jù),都可以使用數(shù)據(jù)流來完成.3 .流分為輸入數(shù)據(jù)流和輸出數(shù)據(jù)流.輸入數(shù)據(jù)流只能讀不能寫;而輸出數(shù)據(jù)流只能寫不能讀.從數(shù)據(jù)流中讀取數(shù)據(jù)是,必須有一個(gè)數(shù)據(jù)源與該數(shù)據(jù)流相連(FileinputStreamin=newFileInputStream("javatest.txt(實(shí)修牝)4 .Java.io包中提供了表示數(shù)據(jù)流的4個(gè)根本抽象類(不可以實(shí)例化),分別
2、是Inputstream、Outputstream、Reader和Writer.因此涉及數(shù)據(jù)流操作的程序中,幾乎都要使用引入語句:importjava.io.*5 .為了使對(duì)象的狀態(tài)能夠方便地永久保存下來,java.io包中又提供了以字節(jié)流為根底的用于對(duì)象的永久化保存狀態(tài)的機(jī)制,通過實(shí)現(xiàn)Objectinput和ObjectOutput接口來完成.6 .輸入數(shù)據(jù)流提供的主要操作方法有:(得到-1,標(biāo)志數(shù)據(jù)流結(jié)束)intread():從輸入流讀取一個(gè)字節(jié)的二進(jìn)制數(shù)據(jù)intread(byteb):將多個(gè)字節(jié)讀到數(shù)組中,填滿整個(gè)數(shù)組intread(byteb,intoff,intlen):從輸入流中讀
3、取長度為len的數(shù)據(jù),從數(shù)組b中下標(biāo)為off的位置開始放置讀入的數(shù)據(jù),讀畢返回讀取的字節(jié)數(shù).7 .voidclose():關(guān)閉數(shù)據(jù)流intavailable():返回目前可以從數(shù)據(jù)流中讀取的字節(jié)數(shù)longskip(longl):跳過數(shù)據(jù)流中指定數(shù)量的字節(jié)不讀取,返回值表示實(shí)際跳過的字節(jié)數(shù)8 .如需要反向讀取數(shù)據(jù)流,那么使用回推操作(PushBack)BooleanmarkSupported():用于測試數(shù)據(jù)流是否支持回推操作voidmark(int):用于標(biāo)記數(shù)據(jù)流的當(dāng)前位置,并劃出一個(gè)緩沖區(qū),其大小至少為指定參數(shù)的大小.voidreset():將輸入流重新定位到對(duì)此流最后調(diào)用mark方法時(shí)的
4、位置9 .輸出數(shù)據(jù)流提供的主要操作方法有:voidwrite(inti):將字節(jié)i寫入到數(shù)據(jù)流voidwrite(byteb):將數(shù)組b中的全部b.length個(gè)字節(jié)寫入數(shù)據(jù)流voidwrite(byteb,intoff,intlen):將數(shù)組b中從下標(biāo)off開始的len個(gè)字節(jié)寫入數(shù)據(jù)流voidclose():當(dāng)結(jié)束對(duì)輸出流的操作是應(yīng)該將其關(guān)閉voidflush():刷新此輸出流并強(qiáng)制寫出所有緩沖的輸出字節(jié)第二節(jié):根本字節(jié)數(shù)據(jù)流類1 .文件數(shù)據(jù)流包才FFileInputStream和FileOutputStream,這兩個(gè)類用來進(jìn)行文件的I/O處理,其數(shù)據(jù)源或數(shù)據(jù)終點(diǎn)都應(yīng)當(dāng)是文件;不支持方法m
5、ark()和reset().2 .緩沖區(qū)數(shù)據(jù)流有BufferInputStream和BufferOutputStream,它們實(shí)在數(shù)據(jù)流上增加了一個(gè)緩沖區(qū),都屬于過濾器數(shù)據(jù)流.3 .讀寫數(shù)據(jù)時(shí),數(shù)據(jù)以塊(大小可設(shè)置)為單位先進(jìn)入緩沖區(qū),其后的讀寫操作作用于緩沖區(qū);采用這個(gè)方法可以降低不同硬件設(shè)備之間速度的差異,提升I/O操作的效率.4 .一般在關(guān)閉一個(gè)緩沖區(qū)輸出流之前,應(yīng)先使用flush()方法,強(qiáng)制輸出剩余數(shù)據(jù).5 .數(shù)據(jù)數(shù)據(jù)流DataInputStream和DataOutputStream(Data可以是intlongdoubleBooleanstring)DataInputStream中
6、包含方法:intreadInt();BolleanreadBoolean()DataOutputStream中包含方法:voidwriteInt(inta);voidwriteBoolean(booleana)6 .java中對(duì)象讀取功能通過java.io包中的ObjectInputStream和ObjectOutputStream類實(shí)現(xiàn).7 .讀對(duì)象用方法readObject()把數(shù)據(jù)流以O(shè)bject類型返回,返回內(nèi)容應(yīng)該在轉(zhuǎn)換為正確的類型之后再執(zhí)行該類的方法:Datad=null;ObjectInputStreams=newObjectInputStream(data.txt);d=(Da
7、ta)s.readObject(d);/要轉(zhuǎn)為正確的類型Data8 .能夠記錄自己的狀態(tài)一遍將來得到復(fù)原的水平,成為對(duì)象的持久性.9 .把對(duì)象轉(zhuǎn)換為字節(jié)序列的過程稱為對(duì)象的序列化,把字節(jié)序列轉(zhuǎn)化為對(duì)象稱為反序列化.10 .如果變量是另一個(gè)對(duì)象的引用,那么引用的對(duì)象也要序列化.這個(gè)過程是遞歸的,保存的結(jié)果可以看做是一個(gè)對(duì)象網(wǎng).11 .Serializable接口中沒有定義任何方法,只是作為一個(gè)標(biāo)記來指示實(shí)現(xiàn)該接口的類可以進(jìn)行序列化,而沒有實(shí)現(xiàn)該接口的類的對(duì)象不能長期保存其狀態(tài).12 .只有實(shí)現(xiàn)Serializable接口的類才能被序列化.13 .要序列化一個(gè)對(duì)象,必須與特定的對(duì)象輸入/輸出流聯(lián)系
8、起來;該功能通過ObjectInputStream和ObjectOutputStream類實(shí)現(xiàn).14 .序列化只能保存對(duì)象的非靜態(tài)成員變量,而不能保存任何成員方法和靜態(tài)成員變量,并且保存的只是變量的值,對(duì)于變量的任何修飾符都不能保存,訪問權(quán)限對(duì)于數(shù)據(jù)域的序列化沒有影響.15 .Thread對(duì)象或流對(duì)象,對(duì)于這樣的成員變量,必須用transient關(guān)鍵字標(biāo)明,否那么編譯器將報(bào)錯(cuò),任何用transient關(guān)鍵字標(biāo)明的成員變量都不會(huì)被保存.16 .如果一個(gè)對(duì)象結(jié)構(gòu)表中包含了一個(gè)對(duì)不可持久化對(duì)象的引用,而這個(gè)引用已用關(guān)鍵字transient加以標(biāo)記,那么這個(gè)對(duì)象仍可以被持久化第三節(jié):根本字符流1. j
9、ava.io包中有專門用于字符流處理的抽象類Reader和Writer,它們只提供了一系列用于字符流處理的接口;它們的方法和Inputstream和Outputstream類類似.2. InputStreamReader和OutputStreamWriter類是字節(jié)流和讀者、寫者的接口,用來在字節(jié)流和字符流之間作為中介,其構(gòu)造方法如下:InputStreamReader(InputStreamin):默認(rèn)標(biāo)準(zhǔn)InputStreamReader(InputStreamin,Stringenc):指定標(biāo)準(zhǔn)enc(如Unicode、8859_1)OutputStreamWriter(OutputSt
10、reamout):默認(rèn)標(biāo)準(zhǔn)OutputStreamWriter(OutputStreamoutStringenc):指定標(biāo)準(zhǔn)enc(如Unicode、8859_1)3. 在進(jìn)行java字符與其他平臺(tái)轉(zhuǎn)換時(shí)如果不進(jìn)行特定聲明,單純構(gòu)造一個(gè)讀者或?qū)懻哌B接到一個(gè)數(shù)據(jù)流,那么將字節(jié)碼作為默認(rèn)情況和Unicode進(jìn)行轉(zhuǎn)換.4. java,io包中提供了緩沖流BufferReader和BufferWriter;其構(gòu)造方法與BufferInputStream和BufferOutputStream類似;除了read()和write()方法外,還提供了整行字符處理方法:publicStringreadLine(
11、):從輸入流中讀取一行字符,行結(jié)束標(biāo)志為n;f'或兩者一起publicvoidnewline():向輸出流中寫入一個(gè)行結(jié)束標(biāo)志5. 把BufferReader或BufferWriter正確連接到InputStreamReader或OutputStreamWriter的末尾需要在BufferWriter中使用flush()方法,以強(qiáng)制清空緩沖區(qū)內(nèi)容,預(yù)防遺漏.第四節(jié):文件處理1 .java.io包中提供了File類,用于處理與文件相關(guān)的操作;File對(duì)象可以用來生成與文件(及其所在的路徑)或目錄結(jié)構(gòu)相關(guān)的對(duì)象2 .創(chuàng)立新的File對(duì)象可以用的一下三種構(gòu)造方法:第一種方法:Filemyfi
12、le;myfile=newFile("java.txt適合麻用程序只用到一個(gè)文件時(shí)第二種方法:myfile=newFile(廣,“java.txt適合應(yīng)用程序只用到多個(gè)文件時(shí)第一種方法:Filemydir=newFile("/");myfile=newFile(mydir,"javaiXt臺(tái)應(yīng)用程序只用到多個(gè)文件時(shí)3 .與文件名相關(guān)的方法:StringgetName():獲取文件名StringgetPath():獲取文件路徑StringgetAbsolutePath():獲取文件絕對(duì)路徑StringgetParent():獲取文件父目錄名稱boolean
13、renameTo(FilenewName):更改文件名,成功返回true否那么返回false4 .文件測定方法booleanexists():文件對(duì)象是否存在booleancanWriter():文件對(duì)象是否可寫booleancanReader():文件對(duì)象是否可讀booleanisFile():文件對(duì)象是否是文件booleanisDiretory():文件對(duì)象是否是目錄booleanisAbsolute():文件對(duì)象是絕對(duì)路徑5 .常用文件信息和方法longlastModified():獲取文件最后修改時(shí)間longlength():獲取文件長度booleandelete():刪除文件對(duì)象指向
14、的文件,成功返回true,否那么返回false6 .目錄工具booleanmkdir():創(chuàng)立新目錄booleanmkdirs():創(chuàng)立新目錄(可以一次生成多個(gè)層次的子目錄)String口list():列出符合模式的文件名7 .java提供了RandomAccessFile類來處理隨機(jī)訪問文件的輸入/輸出.8 .創(chuàng)立一個(gè)隨機(jī)訪問文件的方法:mode是指(只讀r或者讀寫rw)使用文件名:myrafile=newRandomAccessFile(Stringname,Stringmode);使用文件對(duì)象:myrafile=newRandomAccessFile(Filefile,Stringmod
15、e);9 .java語言提供了移動(dòng)文件讀寫指針的幾個(gè)方法longgetFilePointer():返回文件指針當(dāng)前位置voidseek(longpos):將文件指針置于指定的絕對(duì)位置,位置值以從文件開始處的字節(jié)偏移量pos來計(jì)算,pos為0代表文件的開始longlength():返回文件的長度位置值為length()代表文件的結(jié)尾10 .如果文件的讀寫指針已經(jīng)移至文件的末尾,假設(shè)在這之后使用任何流的write()方法,那么所寫入的信息都將添加到原文件之后第八章:圖形界面設(shè)計(jì)第一節(jié):AWT與Swing1 .設(shè)計(jì)圖形用戶界面時(shí)一般有三個(gè)步驟,分別是選取組件、設(shè)計(jì)布局及響應(yīng)事件.2 .Swing組件
16、與AWT組件最大的不同是Swing組件在實(shí)現(xiàn)時(shí)不包含任何本地代碼,因此Swing組件可以不受硬件平臺(tái)的限制,而具有更多的功能.3 .基于AWT的界面可能會(huì)因運(yùn)行平臺(tái)的不同略有差異,而基于Swing的界面在任何平臺(tái)上顯示效果都是一致的.4 .不包含本地代碼的Swing組件被稱為"輕量級(jí)"組件,而包含本地代碼的AWT組件被稱為重量級(jí)組件.當(dāng)“重量級(jí)組件與“輕量級(jí)組件一同使用時(shí),如果組件區(qū)域有重疊,那么重量級(jí)組件總是顯示在上面.5 .Swing組件比AWT組件擁有更多的功能,在Java2平臺(tái)上推薦使用Swing組件.第二節(jié):容器1. 組件可以分為容器組件和非容器組件.2. 容器組
17、件是指可以包含其他組件的組件,又分為頂層容器和一般用途容器.而非容器組件必須包含在容器中.3. 顯示在屏幕上的所有組件都必須包含在某個(gè)容器中,有些容器可以嵌套,在這個(gè)嵌套的層次的最外層,必須是一個(gè)頂層容器.還有一些容器不能當(dāng)做頂層容器的,例如,JPanel面板和JscrollPane滾動(dòng)面板.4. Java為所有容器類定義了父類Container,容器的共有操彳都定義在Container類中.5. Swing中的4種頂層容器,分別是JFrame、JApplet、JDialog和JWindow6. JFrame是一個(gè)帶有標(biāo)題行和限制按鈕(最小化、恢復(fù)/最大化、關(guān)閉)的獨(dú)立窗口,有時(shí)稱為框架,創(chuàng)立
18、應(yīng)用程序時(shí)需要使用JFrame.創(chuàng)立小程序時(shí)使用JApplet,它被包含在瀏覽器窗口中.創(chuàng)立對(duì)話窗口時(shí)使用JDialog.JWindow是一個(gè)不帶標(biāo)題行和限制按鈕的窗口,通常很少使用.7. JFrame類常用的構(gòu)造方法:JFrame():構(gòu)造一個(gè)初始時(shí)不可見、無標(biāo)題的新框架窗體JFrame(String標(biāo)題):創(chuàng)立一個(gè)初始時(shí)不可見、具有指定標(biāo)題的新框架窗體8. JFrame定義和繼承的方法:voidsetVounds(intx,inty,int寬,int高):移動(dòng)并調(diào)整框架大小.左上角位置的橫縱坐標(biāo)分另1J由x和y指定,框架寬高分別由寬和高指定voidsetSize(int寬,int高):設(shè)置
19、框架的大小voidsetBackground(Color.red):使用顏色red(可選)設(shè)置框架的背景色voidsetVisible(Booleantrue/false):設(shè)置框架可見或不可見voidpack():調(diào)整框架的大小,以適合其子組件的首選大小和布局voidsetTiele(String標(biāo)題):設(shè)置框架的標(biāo)題(String類型)voidsetLayout(LayoutManagermanager):設(shè)置布局治理器ContainergetContainerPane():返回此框架窗體的內(nèi)容窗格對(duì)象9. 4個(gè)頂層容器中每一個(gè)都有一個(gè)內(nèi)容窗格.除菜單之外,頂層容器中的組件都放在這個(gè)內(nèi)容窗
20、格中.10. 有兩種方法可以將組件放入內(nèi)容窗格中:第一種方法:通過頂層容器個(gè)getContentPane()方法獲得其默認(rèn)的內(nèi)容窗格.getContentPane()方法的返回類型為java.awt.Container,它仍然是一個(gè)容器.然后將組件添加到內(nèi)容窗格中.ContainercontentPane=frame.getContentPane();contentPane.add(button,BorderLayout.CENTER);第二種方法:創(chuàng)立一個(gè)新的內(nèi)容窗格,以取代頂層容器默認(rèn)的內(nèi)容窗格.通常的做法是創(chuàng)立一個(gè)Jpanel的實(shí)例,它是java.awt.Container的子類.然后將
21、組件添加到Jpanel實(shí)例中,在通過頂層容器的setContentPane()方法將Jpanel實(shí)例設(shè)置為新的內(nèi)容窗格.JPanelcontentPane=newJPanel();創(chuàng)立JPanel實(shí)例contentPane.setLayout(newBorderLayout();創(chuàng)立布局治理器contentPane.add(button,BorderLayout.CENTER);添加組件framer.setContentPane(contentPane);添加內(nèi)容窗格11. 普通面板(Jpanel)和滾動(dòng)面板(JScrollPane)都是用途廣泛的容器.與頂層容器不同,面板不能獨(dú)立存在,必須被
22、添加到其他容器內(nèi)部.面板可以嵌套.12. 當(dāng)組件過多而不能再顯示區(qū)域內(nèi)全部顯示時(shí),滾動(dòng)面板可以讓容器帶滾動(dòng)條,從而顯示出全部的組件.13. JPanel類常用的構(gòu)造方法:JPanel():創(chuàng)立具有FlowLayout布局的新面板JPanel(LayoutManagermanager):創(chuàng)立具有指定布局治理器的新面板使用publicComponentadd(Componentcomp):方法可以將指定組件追加到面板中14. JScrollPane是帶有滾動(dòng)條的面板,它是Container類的子類.但只能添加一個(gè)組件.所以當(dāng)有多個(gè)組件需要添加時(shí),一般先將多個(gè)組件添加到JPanel中,然后再講這個(gè)J
23、Panel添加到JScrollPane中.第三節(jié):標(biāo)簽及按鈕1 .標(biāo)簽(JLable)對(duì)象是簡單的的Swing組件,通常用于顯示提示性的文本信息或圖標(biāo),不可被編輯.2 .標(biāo)簽(JLable)的構(gòu)造方法的6種形式:JLable():創(chuàng)立一個(gè)不顯示文本信息和圖標(biāo)的空標(biāo)簽JLable(Iconimage):創(chuàng)立一個(gè)顯示圖標(biāo)的標(biāo)簽JLable(Stringtext):創(chuàng)立一個(gè)顯示文本信息的標(biāo)簽JLable(Iconimage,inthorizontalAlignment):創(chuàng)立一個(gè)顯示圖標(biāo)的標(biāo)簽,水平對(duì)齊方式由int型參數(shù)horizontalAlignment指定JLable(Stringtext,i
24、nthorizontalAlignment):創(chuàng)立一個(gè)顯示文本信息的標(biāo)簽,水平對(duì)齊方式由int型參數(shù)horizontalAlignment指定JLable(Stringtext,Iconimage,inthorizontalAlignment):創(chuàng)立一個(gè)同時(shí)顯示圖標(biāo)和文本信息的標(biāo)簽,水平對(duì)齊方式由int型參數(shù)horizontalAlignment指定horizontalAlignment可選的參數(shù)是:JLable.LEFT(左對(duì)齊),JLable.RIGHT(右對(duì)齊)和JLable.CENTER(居中對(duì)齊)3 .修改標(biāo)簽上的圖標(biāo)的方法:voidsetIcon(Iconicon)修改標(biāo)簽上的文本
25、信息的方法:voidsetText(Stringtext)4 .按鈕(JButton)是Java圖形用戶界面的根本組件之一5 .經(jīng)常用到的4種形式:JButton(普通按鈕卜JToggleButton(切換按鈕卜JChekBox(復(fù)選按鈕)和JRadioButton(單項(xiàng)選擇按鈕),它們均是AbstractButton的子類或間接子類.6 .各種按鈕都可以設(shè)置文本、設(shè)置圖標(biāo)、注冊事件監(jiān)聽程序.7 .在AbstractButton中定義了按鈕所共有的一些方法,例如:addActionListener()、setEnabled()、setText()和setIcon()等8 .JButton最簡單
26、的按鈕常用的構(gòu)造方法:JButton():創(chuàng)立一個(gè)沒有文本信息和圖標(biāo)的按鈕JButton(Iconicon):創(chuàng)立一個(gè)顯示有圖標(biāo)但沒有文本信息的按鈕JButton(Stringtext):創(chuàng)立一個(gè)顯示文本信息但沒有圖標(biāo)的按鈕JButton(Stringtext,Iconimage):創(chuàng)立一個(gè)有顯示圖標(biāo)和文本信息的按鈕9 .JToggleButton具有兩種狀態(tài)的按鈕,即選中狀態(tài)和未選中狀態(tài),默認(rèn)未選中狀態(tài).10 .JToggleButton切換按鈕常用的構(gòu)造方法:JToggleButton():創(chuàng)立一個(gè)沒有文本信息和圖標(biāo)的切換按鈕JToggleButton(Iconimage,booleans
27、elected):創(chuàng)立一個(gè)顯示圖標(biāo)和指定初始狀態(tài)但沒有文本信息的切換按鈕JToggleButton(Iconicon):創(chuàng)立一個(gè)顯示有圖標(biāo)但沒有文本信息的切換按鈕JToggleButton(Stringtext):創(chuàng)立一個(gè)顯示文本信息但沒有圖標(biāo)的切換按鈕JToggleButton(Stringtext,Iconimage):創(chuàng)立一個(gè)有顯示圖標(biāo)和文本信息的切換按鈕JToggleButton(Stringtext,booleanselected):創(chuàng)立一個(gè)顯示文本信息和指定初始狀態(tài)但沒有圖標(biāo)的切換按鈕JToggleButton(Stringtext,Iconimage,booleanselecte
28、d):創(chuàng)立個(gè)有顯示圖標(biāo)和文本信息和指定初始狀態(tài)的切換按鈕11 .JCheckBox(復(fù)選按鈕)和JRadioButton(單項(xiàng)選擇按鈕)都是JToggleButton(切換按鈕)的子類,構(gòu)造方法與JToggleButton相同,它們也具有選中和未選中狀態(tài),默認(rèn)未選中狀態(tài).12 .在JToggleButton類中定義了一個(gè)isSelected()方法,通過該方法可以獲知按鈕的當(dāng)前狀態(tài);當(dāng)返回值為true時(shí)表示選中狀態(tài),而返回值為false時(shí)表示未選中狀態(tài).第四節(jié):布局治理器1 .容器中包含了組件.組件的的布局,包括各組件的位置和大小,通常由布局治理器負(fù)責(zé)安排.2 .每個(gè)容器,例如JPanel或者
29、頂層容器的內(nèi)容窗格,都有一個(gè)默認(rèn)的布局治理器,可以通過容器的setLayout()方法改變?nèi)萜鞯牟季种卫砥?3 .FlowLayout定義在java.awt包中,這個(gè)布局治理器對(duì)容器中組件進(jìn)行布局的方式是將組件逐個(gè)的放置在容器的一行上,一行放滿后就另起一個(gè)新行.4 .FlowLayout布局治理器的三種構(gòu)造方法:FlowLayout():創(chuàng)立一個(gè)默認(rèn)的FlowLayout布局治理器,居中對(duì)齊,默認(rèn)的水平和垂直間距是5個(gè)像素FlowLayout(intalign):創(chuàng)立一個(gè)默認(rèn)的FlowLayout布局治理器,對(duì)齊方式是指定的,默認(rèn)的水平和垂直間距是5個(gè)像素FlowLayout(intalign
30、,int水平間距,int垂直間距):創(chuàng)立一個(gè),默認(rèn)的FlowLayout布局管理器,對(duì)齊方式是指定的以及指定水平和垂直間距align的可取值有FlowLayout.LEFT、FlowLayout.RIGHT和FlowLayout.CENTER三種方式.5 .與其他布局治理器不同的是,FlowLayout布局治理器并不強(qiáng)行設(shè)定組件的大小,而是允許組件擁有它們自己希望的尺寸.每一組件都有一個(gè)getPreferredSize()方法,容器的布局治理器會(huì)調(diào)用這一方法取得每一組件希望的大小.6 .BorderLayout是頂層容器中內(nèi)容窗格的默認(rèn)布局治理器,它提供了一種較為復(fù)雜的組件布局方案.每個(gè)由Bo
31、rderLayout治理的容器被劃分為5個(gè)區(qū)域,分別代表容器的上部(North)、下部(South)、左部(West)、右部(East)和中部(Center)分別使用常量BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.EAST和BorderLayout.CENTER來表示.在容器的每個(gè)區(qū)域,可以參加一個(gè)組件.7 .BorderLayout定義在java.awt包中,其構(gòu)造方法有兩種:BorderLayout():構(gòu)造一個(gè)組件之間沒有間距的新的BorderLayout布局治理器BorderLayout(in
32、t水平間距,int垂直間距):用指定的組件之間的水平和垂直間距構(gòu)造一個(gè)BorderLayout布局治理器8 .在BorderLayout布局治理器下組件必須通過add()方法參加到容器的指定區(qū)域.9 .如果在add()方法中沒有指定將組件放到哪個(gè)區(qū)域,那么默認(rèn)地會(huì)被放置在Center區(qū)域10 .在容器的每一個(gè)區(qū)域內(nèi),只能參加一個(gè)組件,如果試圖向某個(gè)區(qū)域參加多個(gè)組件,那么只有最后一個(gè)是有效的.11 .GridLayout是一個(gè)網(wǎng)格式的布局治理器,它將容器空間劃分成假設(shè)干行乘假設(shè)干行的網(wǎng)格,組件依次放入其中,每個(gè)組件占據(jù)一格.12 .GridLayout定義在java.awt包中,有3中構(gòu)造方法:
33、GridLayout():創(chuàng)立一個(gè)只有一行的網(wǎng)格,網(wǎng)格的列數(shù)根據(jù)實(shí)際需要而定GridLayout(int行數(shù),int列數(shù)):創(chuàng)立具有指定行數(shù)和列數(shù)的網(wǎng)格布局GridLayout(int行數(shù),int列數(shù),int水平間距,int垂直間距):創(chuàng)立具有指定行數(shù)和列數(shù)且具有水平間距和垂直間距的網(wǎng)格布局構(gòu)造方法中,行數(shù)和列數(shù)中的一個(gè)值可以為0,但是不能兩個(gè)都是0,如果行數(shù)為0,那么行數(shù)會(huì)根據(jù)實(shí)際需要而定,反之亦然.13 .網(wǎng)格每列的寬度都是相同的,網(wǎng)格每行的高度也是相同的.14 .組件被放入容器的次序決定了它所占據(jù)的位置.每行網(wǎng)格從左至右依次填充,一行用完之后轉(zhuǎn)入下一行.15 .BridLayout與Bo
34、rderLayout布局治理器類似,當(dāng)容器的大小改變時(shí),GridLayout所管理的組件的相對(duì)位置不會(huì)發(fā)生變化,但組件的大小會(huì)隨之改變.16 .CardLayout定義在java.awt包中的布局治理器,這是一種卡片式的布局治理器,它將容器中的組件處理為一系列卡片,每一時(shí)刻只顯示出其中的一張,而容器充當(dāng)卡片的容器.17 .當(dāng)容器第一次顯示時(shí),第一個(gè)添加到CardLayout對(duì)象的組件為可見組件.18 .卡片的順序由組件對(duì)象本身在容器內(nèi)部的順序決定的.19 .CardLayout的兩種構(gòu)構(gòu)造方法:CardLayout():創(chuàng)立一個(gè)默認(rèn)的無間距的新的CardLayout布局治理器.CardLayo
35、ut(int水平間距,int垂直間距):創(chuàng)立一個(gè)具有指定的水平和垂直間距的新的CardLayout布局治理器.20 .除了可以使用add()方法將組件參加容器外,CardLayout還有以下一些常用方法:publicvoidfirst(Containerparent):翻到容器的第一張卡片publicvoidnext(Containerparent):翻到指定容器的下一張卡片.如果當(dāng)前的可見卡片是最后一張,那么此方法翻轉(zhuǎn)到布局的第一張卡片.publicvoidprevious(Containerparent):翻到指定容器的前一張卡片.如果當(dāng)前的可見卡片是第一張,那么此方法翻轉(zhuǎn)到布局的最后一張
36、卡片.publicvoidlast(Containerparent):翻到容器的最后一張卡片publicvoidshow(Containerparent,Stringname):翻轉(zhuǎn)至U已添力口至U此布局的具有指定那么的卡片.如果不存在這樣的卡片,那么不發(fā)生任何操作.21 .BoxLayout是定義在javax.swing包中的另一種常用布局治理器,它將容器中的組件按水平方向排成一行或按垂直方向排成一列.當(dāng)組件排成一行時(shí),每個(gè)組件可以有不同的寬度,當(dāng)組件排成一列時(shí),每個(gè)組件可以有不同的高度.第五節(jié):事件處理1 .在java程序運(yùn)行時(shí),用戶在程序界面所進(jìn)行的操作稱為用戶事件.對(duì)事件的響應(yīng)稱為事件
37、處理.2 .java中,為了便于治理,系統(tǒng)將事件分類,稱為事件類型.系統(tǒng)為每個(gè)事件類型提供一個(gè)偵聽程序接口,它規(guī)定了接收并處理該類事件的方法的標(biāo)準(zhǔn).3 .為了接收處理某類用戶事件,組件必須注冊相應(yīng)的事件處理程序,這種事件處理程序稱為事件偵聽程序(Listener,也稱偵聽器),它是實(shí)現(xiàn)了對(duì)應(yīng)偵聽程序接口的一個(gè)類.要作為偵聽程序?qū)ο蟮念惐仨殞?shí)現(xiàn)相應(yīng)的接口,并實(shí)現(xiàn)接口中規(guī)定的響應(yīng)事件的方法.4 .事件被直接送往產(chǎn)生這個(gè)事件的組件,組件需要注冊一個(gè)或多個(gè)偵聽程序.偵聽程序的類中包含了事件處理程序,用來接收和處理這個(gè)事件.這種處理事件的機(jī)制稱為委托事件處理模型.5 .事件處理的步驟如下:第一:程序中弓
38、I入java.awt.even包.importjava.awt.even;第二:給所需的事件源對(duì)象注冊事件偵聽程序.事件源對(duì)象.addXXXListener(XXXListener);第三:實(shí)現(xiàn)相應(yīng)的方法.假設(shè)某個(gè)偵聽程序接口包含多個(gè)方法,那么需要實(shí)現(xiàn)所有方法.6 .在適配器類中實(shí)現(xiàn)了相應(yīng)接口中的全部方法,只是方法的內(nèi)容為空.第六節(jié):繪圖根底1 .可以使用java.awt包中的Color類來定義和治理顏色.Color類的每個(gè)對(duì)象表示一種顏色.2 .可以有兩種方法生成顏色:第一種:使用Java的Color類中預(yù)定義的顏色第二種:通過紅、綠、藍(lán)三原色的值來組合ColormyColor=newCol
39、or(r,g,b);r、g、b取值0-2553 .可以使用下面兩個(gè)定義在JComponent中的方法設(shè)置組件前景色和背景色:publicvoidsetForeground(Colorc):設(shè)置前景色publicvoidsetBackground(Colorc):設(shè)置背景色4 .顯示文字的方法主要有以下3種:publicvoiddrawChars(chardata,intoffset,intlength,intx,inty):使用止匕圖形上下文的當(dāng)前字體和顏色顯示字符數(shù)組data中從0ffset位置開始、最多l(xiāng)ength個(gè)字符.首字符的基線位于此圖形上下文坐標(biāo)系統(tǒng)的(x,y)處.publicvo
40、iddrawstring(Stringstr,intx,inty):在指定位置顯示字符串strpublicvoiddrawBytes(bytedata,intoffset,intlength,intx,inty):使用此圖形上下文的當(dāng)前字體和顏色顯示由指定的byte數(shù)組data中從0ffset位置開始、最多l(xiāng)ength個(gè)字符.首字符的基線位于此圖形上下文坐標(biāo)系統(tǒng)的(x,y)處.5 .文字字形有字體、樣式及字號(hào)3個(gè)要素6 .創(chuàng)立Font的構(gòu)造方法:Font(String字體名稱,int字體本式,int字號(hào))順序不能變7 .Font類中常用的方法:setFont(Fontf):對(duì)組件中文本字體進(jìn)行
41、設(shè)定,這個(gè)方法需要java.awt.Font類的一個(gè)實(shí)例做參數(shù)StringgetName():返回Font的邏輯名稱,即字體名稱intgetSize():返回此Font的字號(hào)大小,舍入為整intgetStyle():返回此Font的樣式BooleanisBold():測試此Font對(duì)象的樣式是否為BOLDBooleanisItalic():測試此Font對(duì)象的樣式是否為ITALICBooleanisPl1in():測試此Font對(duì)象的樣式是否為PLAIN8 .Graphics類是所有圖形上下文的抽象父類,允許應(yīng)用程序在組件以及屏幕圖像上進(jìn)行繪制.9 .繪圖模式主要分為兩種,分別是正常模式和異或
42、模式.10 .Graphic2D擁有更強(qiáng)大的二維圖形處理水平,提供對(duì)幾何形狀、坐標(biāo)轉(zhuǎn)換、顏色治理以及文字布局等更復(fù)雜的限制.11 .Graphic2D有以下一些屬性:stroke屬性限制線的寬度paint屬性限制填充效果transform屬性限制圖形平移、縮放和斜切等變換操作12 .使用Graphic2D類的新方法畫一個(gè)圖形的步驟通常是:第一:先在重畫方法painComponent()或pain()中,把參數(shù)對(duì)象g強(qiáng)制轉(zhuǎn)換為Graphic2D對(duì)象第二:用上述圖形類提供的靜態(tài)方法Double()創(chuàng)立該圖形的對(duì)象.第三:以圖形對(duì)象為參數(shù)調(diào)用Graphic2D對(duì)象的draw()方法繪制這個(gè)圖形.第九
43、章:Swing組件第一節(jié):組合框與列表1 .組合框(JComboBox)是一個(gè)下拉式菜單,它有兩種形式:不可被編輯和可編輯的.2 .JComboBox常用的構(gòu)造方法:JComboBox():創(chuàng)立一個(gè)沒有任何可選項(xiàng)的默認(rèn)組合框JComboBox(Objectitems):根據(jù)Object數(shù)組創(chuàng)立組合框,Object數(shù)組的元素即為組合框中的可選項(xiàng).3 .JComboBox類中定義的相關(guān)方法:voidaddItem(ObjectanObject):在末尾添加新的可選項(xiàng)ObjectgetItemAt(intindex):返回指定索引序號(hào)index處的可選項(xiàng)intgetItemCount():返回列表中
44、的項(xiàng)數(shù)voidinsertItemAt(ObjectanObject,intindex):在index指定的位置添加新的可選項(xiàng)anObjectintgetSelectedIndex():返回列表中與給定項(xiàng)匹配的第一個(gè)選項(xiàng)的索引序號(hào)ObjectgetSelectedItem():返回當(dāng)前所選項(xiàng)voidremoveAllItems():刪除所有可選項(xiàng)voidremoveItem(ObjectanObject):刪除由對(duì)象anObject指定的可選項(xiàng)voidremoveItemAt(intanIndex):刪除由anIndex指定處的可選項(xiàng)4 .在組合框?qū)ο髣?chuàng)立之后,默認(rèn)是不可編輯的,可以通過set
45、Editable(true)方法將其設(shè)置為可編輯的.5 .列表(JList)是可供用戶進(jìn)行選擇的一系列可選項(xiàng).6 .列表(JList)常用的構(gòu)造方法如下:JList():構(gòu)造一個(gè)空列表JList(ObjectlistData):構(gòu)造一個(gè)列表,列表的可選項(xiàng)由對(duì)象數(shù)組listData指定JList(Vector<?>listData):構(gòu)造一個(gè)列表,使其顯示指定Vector中的元素7 .列表(JList)類中定義了相關(guān)的方法,常用的方法有:publicintgetSelectedIndex():返回所選項(xiàng)第一次出現(xiàn)的所有;如果沒有所選項(xiàng)那么返回-1publicObjectgetSele
46、ctedValue():返回所選的第一個(gè)值,如果選擇為空,那么返回nullpublicvoidsetVisibleRowCount(intvisibleRowCount):設(shè)置不適用滾動(dòng)條可以在列表中顯示的首選行數(shù)第二節(jié):文本組件1 .文本組件可用于顯示信息和提供用戶輸入功能,在Swing中提供了文本域(JTextField)、口令輸入域(JPasswordField)、文本區(qū)(JTextArea)等多個(gè)文本組件,這些文本組件都有一個(gè)共同的父類JTextComponent2 .在JTextComponent中定義了文本組件所共有的一些方法:StringgetSelectedText():從文本
47、組件中提取被選中的文本內(nèi)容StringgetText(intoffs,intlen):從文本組件中提取范圍的文本內(nèi)容voidselect(intstart,intend):在文本組件中選中指定的起始和結(jié)束位置之間的內(nèi)容voidselectAll():在文本組件中選中所有文本內(nèi)容voidserEditable(booleanb):設(shè)置為可編輯或不可編輯狀態(tài)voidsetText(Stringt):設(shè)置文本組件中的文本內(nèi)容voidsetDocument(Documentdoc):設(shè)置文本組件的文檔voidcopy():復(fù)制選中的文本到剪貼板voidcut():剪切選中的文本到剪貼板3 .文本域(J
48、TextField)是一個(gè)單行的文本輸入框,可用于輸入少量文本4 .文本域(JTextField)常用的構(gòu)造方法如下:JTextField():構(gòu)造一個(gè)空文本域JTextField(intcolumns):構(gòu)造一個(gè)具有指定列數(shù)的空文本域,int型參數(shù)columns指定文本域列數(shù)JTextField(Stringtext):構(gòu)造一個(gè)顯示指定初始字符串的文本域,String型參數(shù)text指定要顯示的初始字符串JTextField(Stringtext,intcolumns):構(gòu)造一個(gè)具有指定列數(shù)并顯示指定初始字符串的文本域,String型參數(shù)text指定要顯示的初始字符串,int型參數(shù)column
49、s指定文本域的列數(shù)5 .文本域(JTextField)常用的方法:voidaddActionListener(ActionListenerl):添加指定的操作偵聽器,接收操作事件voidremoveActionLisener(ActionListenerl):移除指定的操作偵聽器,不再接收操作事件voidsetFont(Fontf):設(shè)置當(dāng)前字體voidsetHorizontalAlignment(intalignment):設(shè)置文本的水平對(duì)齊方式.有效值包括JTextField.LEFT、JTextField.CENTER、JTextField.RIGHT、JTextField.LEADIN
50、G和JTextField.TRAILINGintgetColumns():返回文本域的列數(shù)6 .可以用setEditable(boolean)方法將文本域設(shè)定為可編輯或不可編輯狀態(tài)7 .文本區(qū)(JTextArea)是一個(gè)多行多列的文本輸入框.8 .文本區(qū)(JTextArea)常用的構(gòu)造方法如下:JTextArea():構(gòu)造一個(gè)空文本區(qū)JTextArea(Stringtext):構(gòu)造一個(gè)顯示指定初始字符串的文本區(qū),String型參數(shù)text指定要顯示的初始字符串JTextArea(introws,intcolumns):構(gòu)造一個(gè)具有指定行數(shù)和列數(shù)的空文本區(qū),int型參數(shù)rows和columns分
51、別指定文本區(qū)的行數(shù)和列數(shù)JTextArea(Stringtext,introws,intcolumns):構(gòu)造一個(gè)而具有指定行數(shù)和列數(shù)并顯示指定初始字符串的文本區(qū),String型參數(shù)text指定要顯示的初始字符串,int型參數(shù)rows和columns指定文本區(qū)的行數(shù)和列數(shù)9 .文本區(qū)(JTextArea)常用的方法:voidappend(Stringstr):將指定的文本str追加到文本區(qū)voidinsert(Stringstr,intpos):將指定文本str插入到文本區(qū)的特定位置pos處voidreplaceRange(Stringstr,intstart,intend):用指定文本str
52、替換文本區(qū)中從起始位置start到結(jié)尾位置end的內(nèi)容第三節(jié):菜單組件1 .菜單也是最常用的GUI組件之一,Swing包中提供了多種菜單組件,包括菜單欄(JMenuBar)、菜單項(xiàng)(JMenuItem)、JMenu、復(fù)選菜單項(xiàng)(JCheckBoxMenuItem)、單項(xiàng)選擇菜單項(xiàng)(JRadioButtonMenuItem)和彈出菜單(JPopupMenu)等.2 .菜單有下拉式菜單和彈出式菜單兩種.3 .菜單欄(JMenuBar)是窗口中的主菜單,用來包容一組菜單.4 .菜單欄(JMenuBar)只有一種構(gòu)造方法,即JMenuBar()5 .如果將整個(gè)菜單系統(tǒng)看做是一棵樹,那么菜單項(xiàng)(JMen
53、uItem)就是這棵樹的葉子,是菜單系統(tǒng)的最下面.6 .菜單項(xiàng)(JMenuItem)常用的構(gòu)造方法如下:JMenuItem():創(chuàng)立不帶有設(shè)置文本或圖標(biāo)的菜單項(xiàng)JMenuItem(Iconicon):創(chuàng)立一個(gè)只顯示圖標(biāo)的菜單項(xiàng),圖標(biāo)由Icon型參數(shù)icon指定JMenuItem(Stringtext):創(chuàng)立一個(gè)只顯示文本的菜單項(xiàng),文本由String型參數(shù)text指定JMenuItem(Stringtext,Iconicon):創(chuàng)立一個(gè)同時(shí)顯示文本和圖標(biāo)的菜單項(xiàng),文本由String型參數(shù)text指定,圖標(biāo)由Icon型參數(shù)icon指定.JMenuItem(Stringtext,intmnemoni
54、c):創(chuàng)立一個(gè)顯示文本并且有快捷鍵的菜單項(xiàng),文本由String型參數(shù)text指定,快捷鍵由int型參數(shù)mnemonic指定7 .復(fù)選菜單項(xiàng)(JCheckBoxMenuItem)和單項(xiàng)選擇菜單項(xiàng)(JRadioButtonMenuItem)是兩種特殊的菜單項(xiàng).8 .復(fù)選菜單項(xiàng)(JCheckBoxMenuItem)前面有一個(gè)小方框.9 .單項(xiàng)選擇菜單項(xiàng)(JRadioButtonMenuItem)前面有一個(gè)小圓圈.10 .復(fù)選菜單項(xiàng)(JCheckBoxMenuItem)和單項(xiàng)選擇菜單項(xiàng)(JRadioButtonMenuItem)都有選中或不選中的操作,因此在構(gòu)造方法中可以用boolean型參數(shù)指定菜單
55、項(xiàng)的初始狀態(tài).第四節(jié):對(duì)話框1 .對(duì)話框(JDialog)是一個(gè)臨時(shí)的可移動(dòng)的窗口,且要依賴于其他窗口,當(dāng)它所依賴的窗口消失或最小化是,對(duì)話框也將消失.當(dāng)窗口復(fù)原時(shí),對(duì)話框會(huì)自動(dòng)恢復(fù).2 .一般要先創(chuàng)立一個(gè)窗口類,在創(chuàng)立一個(gè)對(duì)話框類,且讓對(duì)話框依附于窗口.3 .對(duì)話框(JDialog)分為強(qiáng)制型和非強(qiáng)制型兩種.強(qiáng)制型對(duì)話框被關(guān)閉之前,其他窗口無法接收任何形式的輸入,也就是該對(duì)話框過程不能中斷,這樣的窗口也稱為模式窗口;非強(qiáng)制型對(duì)話框可以中斷對(duì)話過程,區(qū)響應(yīng)對(duì)話框之外的事件.4 .對(duì)話框(JDialog)的構(gòu)造方法如下:JDialog(Dialogowner):創(chuàng)立一個(gè)沒有標(biāo)題但將指定的對(duì)話框作
56、為其所有者的無模式對(duì)話框JDialog(Dialogowner,Booleanmodal):創(chuàng)立一個(gè)沒有標(biāo)題但有指定所有者的對(duì)話框,boolean型參數(shù)modal指定對(duì)話框是有模式或無模式.JDialog(DialogownerStringtitle):創(chuàng)立一個(gè)有標(biāo)題和指定所有者的無模式對(duì)話框JDialog(DialogownerStringtitle,Booleanmodal):創(chuàng)立一個(gè)有標(biāo)題和指定所有者的對(duì)話框,boolean型參數(shù)modal指定對(duì)話框是有模式或無模式.JDialog(Frameowner):創(chuàng)立一個(gè)沒有標(biāo)題但有指定的框架作為其所有者的對(duì)話框,JDialog(Frameow
57、ner),Booleanmodal):創(chuàng)立一個(gè)沒有標(biāo)題但有指定的框架作為其所有者的對(duì)話框,boolean型參數(shù)modal指定對(duì)話框是有模式或無模式.JDialog(FrameownerStringtitle):創(chuàng)立一個(gè)有標(biāo)題和指定所有者框架的無模式對(duì)話框JDialog(FrameownerStringtitle,Booleanmodal):創(chuàng)立一個(gè)有標(biāo)題和指定框架所有者的對(duì)話框,boolean型參數(shù)modal指定對(duì)話框是有模式或無模式.5 .剛剛創(chuàng)立的對(duì)話框(JDialog)是不可見的,需要調(diào)用setVisible(true)方法才能將其顯示出來;當(dāng)對(duì)話框不需要顯示時(shí),調(diào)用setVisible(false)方法可以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代物流系統(tǒng)規(guī)劃與管理知識(shí)答題卷
- 下水井抽水施工方案
- 市場調(diào)研與數(shù)據(jù)分析指南
- 現(xiàn)代物流供應(yīng)鏈管理試題匯編
- 房屋買賣租賃合同
- 地基樁基檢測施工方案
- 垂直降溫管施工方案
- 柏油路施工方案
- 鋼筋混凝土樓板施工方案
- 幕墻拆除施工方案
- 信用修復(fù)申請(qǐng)文書(當(dāng)事人適用)
- 導(dǎo)管滑脫應(yīng)急預(yù)案演練住院患者導(dǎo)尿管道滑脫
- 2023年新改版教科版六年級(jí)下冊科學(xué)全冊教案(新課標(biāo))
- 03SG520-2 實(shí)腹式鋼吊車梁(中輕級(jí)工作制 A1~A5 Q345鋼 跨度6m,7.5m,9m)
- 高質(zhì)量C+ + C 編程指南
- Access數(shù)據(jù)庫程序設(shè)計(jì)上機(jī)操作練習(xí)題2
- 《最優(yōu)化方法》復(fù)習(xí)題(含答案)
- GB/T 4506-1984針尖鋒利度和強(qiáng)度試驗(yàn)方法
- GB 2759-2015食品安全國家標(biāo)準(zhǔn)冷凍飲品和制作料
- 輸變電工程結(jié)構(gòu)工藝標(biāo)準(zhǔn)庫
- 稅收風(fēng)險(xiǎn)管理課件
評(píng)論
0/150
提交評(píng)論