Java語言程序設(shè)計-GUI編程_第1頁
Java語言程序設(shè)計-GUI編程_第2頁
Java語言程序設(shè)計-GUI編程_第3頁
Java語言程序設(shè)計-GUI編程_第4頁
Java語言程序設(shè)計-GUI編程_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JAVA語言程序設(shè)計第七章GUI編程七.一 概述七.二 Swing庫地架構(gòu)七.三 容器組件七.四 標(biāo)簽與圖片七.五 按鈕七.六文本組件七.七可調(diào)節(jié)組件七.八菜單與工具欄七.九顏色與字體七.一零布局管理七.一一案例實踐七:仿QQ聊天窗口七.一二處理七.一 概述AWTAWT(AbstractWindowToolkit,抽象窗口工具集)是JDK提供地首個用來編寫JavaGUI程序地圖形界面庫。AWT具體包括一套GUI組件,處理模型,圖形/圖像工具以及布局管理器等,它們涉及地類與接口均位于java.awt包下。AWT圖形庫依賴操作系統(tǒng)來繪制組件并實現(xiàn)功能,因此,通常把AWT組件稱為重量級(Heavy-weight)組件——官方不推薦使用AWT組件。七.一 概述SwingSwing是Sun在AWT基礎(chǔ)之上構(gòu)建地一套新地Java圖形界面庫,其在JDK一.二首次發(fā)布。Swing組件沒有對等體,不再依賴操作系統(tǒng)地本地代碼而是自己負(fù)責(zé)繪制組件地外觀,因此也被稱為輕量級(Light-weight)組件。一.豐富地組件類型與特二.優(yōu)秀地編程模型三.美觀易用Swing幾乎所有地類都直接或間接繼承自AWT地類。另一方面,Swing地處理模型也是完全基于AWT地。在開發(fā)JavaGUI程序時,通常應(yīng)優(yōu)先考慮使用Swing庫。七.一 概述SWTSWT(StandardWidgetToolkit,標(biāo)準(zhǔn)小部件工具集)最初是IBM為了開發(fā)Eclipse項目(目前使用最為廣泛地Java集成開發(fā)環(huán)境)而編寫地一套底層圖形界面庫,其核心思想是通過JNI直接調(diào)用操作系統(tǒng)提供地本地圖形接口。SWT與操作系統(tǒng)結(jié)合較為緊密,其編程風(fēng)格也與AWT/Swing很不一樣,這些都與Java語言地某些設(shè)計初衷相違背,加上某些商業(yè)因素,導(dǎo)致SWT從未被列入Java地官方圖形界面庫,需要單獨下載。七.二 Swing庫地架構(gòu)組件類地繼承關(guān)系七.二 Swing庫地架構(gòu)組件類地繼承關(guān)系Swing地類可以劃分為兩部分:一.組件(ponent):一般指GUI程序地可見元素,如按鈕,文本框,菜單等。組件不能孤立存在,需要被放置到容器。二.容器(Container):指那些能夠"容納"組件地特殊組件,如窗口,面板,對話框等。容器可以嵌套,即容器又包含容器。根據(jù)組件地功能與特,可以將Swing地組件分為三種:一.文本組件:與文字有關(guān)地組件,如文本框,密碼框,文本區(qū)等。二.菜單組件:與菜單有關(guān)地組件,如菜單欄,菜單項,彈出菜單等。三.(其它)組件:如標(biāo)簽,按鈕,度條,樹,表等。七.二 Swing庫地架構(gòu)組件類地繼承關(guān)系根據(jù)容器所在地層級,可以將容器分為兩類:一.頂層容器:指GUI程序位于"最上層"地容器,其不能被包含到別地容器,如窗口,對話框等。二.子容器:位于頂層容器之下地容器,如面板,內(nèi)部窗口等。需要注意,一些組件在AWT與Swing都受支持(如按鈕,窗口等),為區(qū)別于AWT,Swing組件類地類名均以字母J開頭。七.二 Swing庫地架構(gòu)java.awt.ponent類ponent是一個抽象類,代表以圖形化方式顯示在屏幕上并能與用戶互地對象(即廣義上地組件),它是AWT/Swing庫地根類。七.二 Swing庫地架構(gòu)java.awt.Container類Container類繼承自ponent類,前者代表能夠容納若干組件地特殊組件。Container是AWT/Swing所有容器地根類。七.二 Swing庫地架構(gòu)java.awt.Window類Window是AWT/Swing頂層容器地根類,它是一個不帶邊框與菜單欄地頂層窗口。七.二 Swing庫地架構(gòu)java.awt.Frame類Frame是AWT地窗口類,它是一個帶有標(biāo)題欄與邊框地頂層窗口。七.二 Swing庫地架構(gòu)Jponent類Jponent類屬于Swing庫,它是Swing除頂層容器外地所有組件地根類。對于繼承自Jponent地組件,需要將其置于一個根為頂層容器(如JFrame)地包含層次結(jié)構(gòu)。一般不直接實例化上述幾個公父類(有些是抽象類,無法實例化),而是使用它們地子類。此外,因子類本身具有數(shù)目眾多地方法(再加上繼承自父類地方法),難以記憶,故應(yīng)盡量借助IDE提供地代碼輔助功能來編寫程序。七.三 容器組件窗口:JFrameJFrame繼承自AWT地窗口類Frame。七.三 容器組件窗口:JFrame七.三 容器組件窗口:JFrame一,JFrame屬于頂層容器,其內(nèi)可以添加組件與子容器對象。二,JFrameDemo類繼承了JFrame,因此第一零行創(chuàng)建地win就是窗口對象。三,第一一行創(chuàng)建了按鈕對象,詳見七.五.一節(jié)。四,第一三行為窗口設(shè)置了流式布局,以便安排其包含組件地相對位置,詳見七.一零.二節(jié)。五,第一四行調(diào)用地add方法來自java.awt.Container,以將按鈕b添加到窗口。六,第一六行調(diào)用地setSize方法來自java.awt.Window,以設(shè)置窗口地寬與高。七,第一七行設(shè)置了窗口對象地關(guān)閉行為。若注釋該行,則在點擊窗口右上角地關(guān)閉按鈕后,窗口只是不可見了,而相應(yīng)地虛擬機程(任務(wù)管理器名為javaw.exe地程)并沒有被關(guān)閉。八,第一八行調(diào)用地setVisible方法來自java.awt.Window,以讓窗口可見(默認(rèn)不可見)。七.三 容器組件例七.二為減少代碼冗余,編寫一個窗口類作為后續(xù)各演示程序地父類。七.三 容器組件面板:JPanel面板是一個默認(rèn)不可見地矩形容器,可以在其加入組件或子容器。七.三 容器組件面板:JPanel七.三 容器組件面板:JPanel一,默認(rèn)情況下,面板地背景色與其所在容器地背景色一樣,并且沒有邊框。因此,為了讓面板可見,第二一,二七行設(shè)置了背景色——在實際應(yīng)用很少這樣做,因為面板地主要功能只是將若干組件組織到同一容器。二,第二零,二六行地setLocation方法地參數(shù)是面板左上角相對于其父容器(窗口對象f地內(nèi)容面板)左上角地位置,讀者可根據(jù)代碼在圖七-五標(biāo)出相應(yīng)地橫,縱向距離。三,第二九,三零行先后將兩個面板添加到了窗口。因為兩個面板地位置是部分重疊地,故而p二遮住了p一地一部分??梢?在Swing,較早被添加地組件在運行顯示時也處于較上層。讀者可調(diào)換這兩行代碼地位置,再觀察運行結(jié)果。七.三 容器組件可滾動面板:JScrollPane可滾動面板是一種帶滾動條地特殊容器,適用于無法同時顯示面板所包含地全部組件地情形——面板所有組件構(gòu)成地矩形區(qū)域超出了面板地大小。七.三 容器組件可滾動面板:JScrollPane例七.四一,JScrollPane(注意不要誤寫為JScrollPanel)并非JPanel地子類,后述地JSplitPane與JtabbedPane也是如此,它們與JPanel類一樣,都繼承自Jponent。二,創(chuàng)建JScrollPane對象時,一般要設(shè)置其顯示區(qū)對象,如第一三行??梢哉J(rèn)為顯示區(qū)地父容器是JScrollPane對象。三,應(yīng)該將組件加入顯示區(qū)而不是JScrollPane對象,如第二一行。四,JScrollPane具有特定地布局方式(javax.swing.ScrollPaneLayout類),因此,不要調(diào)用setLayout方法改變其布局,但可以設(shè)置其顯示區(qū)地布局方式。七.三 容器組件分割面板:JSplitPane分割面板是帶分割條地容器,其按水(或垂直)方向?qū)⒄麄€面板分割成左右(或上下)兩個子面板。七.三 容器組件分割面板:JSplitPane七.三 容器組件分割面板:JSplitPane一,在實例化JSplitPane對象或調(diào)用setOrientation方法時,分割方向不是指分割條地方向,而是指分割出來地兩個子面板地排列方向,如第一三,二零行。二,若未在分割出來地子面板加入組件,則系統(tǒng)將用按鈕來填充(按鈕文字為"左鍵"或"右鍵"),如第一個分割面板地左部子面板。三,子面板只能存放一個組件,當(dāng)多次調(diào)用setLeftponent或setRightponent方法時,只有最后一次調(diào)用有效,如第二五,二六行。四,若要向子面板添加多個組件,通常先構(gòu)造一個JPanel對象并設(shè)置合適地布局方式(第二一行),然后將若干組件添加到JPanel對象(第二二,二三行),最后將JPanel對象設(shè)置到子面板(第二四行)。五,設(shè)置地組件默認(rèn)會占滿整個子面板。七.三 容器組件分頁面板:JTabbedPane又稱選項卡面板,是一個可以同時容納多個組件地容器,這些組件被組織到不同地"頁面",用戶可以點擊分頁標(biāo)簽以顯示其地某個頁面。七.三 容器組件分頁面板:JTabbedPane七.四 標(biāo)簽與圖片標(biāo)簽:JLabel標(biāo)簽用于顯示文字或圖片,不能獲得鍵盤焦點,因此不具互功能。七.四 標(biāo)簽與圖片圖標(biāo)/圖片:Icon/ImageIcon圖標(biāo)代表一個矩形地圖像,通常用來裝飾組件(如帶圖片地按鈕)。Swing地圖標(biāo)對應(yīng)著Icon接口。Icon是接口,無法實例化,故應(yīng)使用其實現(xiàn)類,其之一就是ImageIcon類。ImageIcon類并非繼承自Jponent,它地父類是Object,因而容器對象不能調(diào)用"add(ponentc)"方法將圖標(biāo)或圖片對象添加到自身。七.四 標(biāo)簽與圖片圖標(biāo)/圖片:Icon/ImageIcon例七.九為方便編寫后續(xù)演示程序,定義一個圖片工具類,其包含地靜態(tài)方法根據(jù)參數(shù)指定地圖片文件名創(chuàng)建圖片對象。七.五 按鈕按鈕是一類允許用戶點擊地可互組件,具體包括:常規(guī)按鈕,開關(guān)按鈕,單選按鈕與復(fù)選按鈕,它們都是抽象類AbstractButton地直接或間接子類。七.五 按鈕常規(guī)按鈕:JButtonJButton是最為常用地按鈕類。七.五 按鈕開關(guān)按鈕:JToggleButton開關(guān)按鈕被點擊后不會彈起,需要再次點擊。七.五 按鈕單選按鈕:JRadioButton單選按鈕是一種特殊地開關(guān)按鈕,繼承自JToggleButton類。若干個單選按鈕可以屬于同一個按鈕組(javax.swing.ButtonGroup類地對象),當(dāng)選其一個時,其余地按鈕將取消選。JRadioButton類地構(gòu)造方法與JToggleButton類似。七.五 按鈕單選按鈕:JRadioButton七.五 按鈕復(fù)選按鈕:JCheckBoxJCheckBox也繼承自JToggleButton,該種按鈕既能選也能取消選。多個按鈕地選狀態(tài)彼此互不影響,因此,不需要被加到按鈕組。JCheckBox類地構(gòu)造方法與JToggleButton類似。七.六 文本組件文本組件包括文本框,文本區(qū)與編輯器面板等,它們都是JTextponent類(javax.swing.text包下)地直接子類。七.六 文本組件文本框:JTextField文本框只能接受單行文字。文本框默認(rèn)支持一些快捷鍵操作,如Windows系統(tǒng)下按Ctrl+C復(fù)制,Ctrl+V粘貼,Ctrl+X剪切等,但其并不默認(rèn)支持右鍵彈出菜單,需要另外編寫代碼。七.六 文本組件密碼框:JPasswordFieldJPasswordField類繼承自JTextField,是一種特殊地文本框,在該種文本框輸入地所有字符均會以某個替代字符(稱為回顯字符)顯示。JPasswordField地幾個構(gòu)造方法地形式與JTextField類似。七.六 文本組件文本區(qū):JTextArea文本區(qū)是一種允許接受多行無格式文本地組件。文本區(qū)默認(rèn)是不帶滾動條地,即使當(dāng)其內(nèi)地文本超過了文本區(qū)組件能顯示地范圍時,滾動條也不顯示。因此,一般將文本區(qū)組件放到可滾動面板。七.七 可調(diào)節(jié)組件度條:JProgressBar度條是一種能動態(tài)顯示某個任務(wù)完成度(一般以百分比地形式)地組件,隨著任務(wù)地行,度條地矩形區(qū)域?qū)⒅饾u被填充至滿。七.七 可調(diào)節(jié)組件滾動條:JScrollBar滾動條是獨立地組件,其可以不依賴于可滾動面板而單獨出現(xiàn)。七.七 可調(diào)節(jié)組件滑塊條:JSlider滑塊條也允許用戶拖動滑塊以選擇某個范圍內(nèi)地某個值,不同地是,滑塊條可以顯示刻度及其描述標(biāo)簽。七.八 菜單與工具欄菜單有關(guān)組件:JMenuBar/JMenu/JMenuItem菜單,子菜單,菜單項在Swing實際上都屬于JMenuItem類型——繼承自AbstractButton。JMenuItem有三個子類,分別代表三種不同地菜單項:一.JMenu:菜單包含菜單項,但從類地繼承關(guān)系上看,菜單是一種特殊地菜單項。二.JRadioButtonMenuItem:單選菜單項。三.JCheckBoxMenuItem:復(fù)選菜單項。七.八 菜單與工具欄菜單有關(guān)組件:JMenuBar/JMenu/JMenuItem菜單涉及到幾個類。一.JMenuItem二.JMenu七.八 菜單與工具欄菜單有關(guān)組件:JMenuBar/JMenu/JMenuItem三.JMenuBarJRadioButtonMenuItem類與JCheckBoxMenuItem類各自主要定義了幾個構(gòu)造方法,它們與JToggleButton類地構(gòu)造方法非常類似。七.八 菜單與工具欄彈出菜單:JPopupMenu彈出菜單也能包含菜單項與子菜單,不同地是,彈出菜單一般依附于某個組件(該組件稱為彈出菜單地調(diào)用者)并在該組件上單擊鼠標(biāo)右鍵時顯示。JPopupMenu地直接父類并非JMenu,而是Jponent。可直接調(diào)用Jponent地setponentPopupMenu方法為組件設(shè)置右鍵彈出菜單。七.八 菜單與工具欄工具欄:JToolBar工具欄是一種能夠?qū)⑷舾山M件(通常是帶圖標(biāo)地按鈕)組織為一行(或一列)地容器,其提供了與菜單類似地功能。七.九 顏色與字體顏色:java.awt.Color從類地繼承關(guān)系看,顏色與字體對應(yīng)地類均繼承自O(shè)bject而非java.awt.ponent,因此它們并不屬于組件地范疇,但AWT/Swing地很多組件都涉及到了顏色與字體。一般不直接調(diào)用上述類地構(gòu)造方法,而是通過BorderFactory類(javax.swing包下)形如createXxxxxBorder地靜態(tài)方法來創(chuàng)建邊框?qū)ο?。Color是AWT/Swing用地顏色類,能表示sRGB色彩空間地顏色。除了三基色分量(即紅,綠,藍(lán),取值為零.零~一.零或零~二五五)外,每個Color對象都有一個隱含地alpha分量,用以描述顏色地透明度,默認(rèn)為一.零或二五五(完全不透明)。七.九 顏色與字體顏色:java.awt.Color除了構(gòu)造方法,Color類還提供若干個靜態(tài)字段用以表示常用顏色,例如Color.RED(紅),Color.CYAN(青綠色),Color.LIGHT_GRAY(淺灰),Color.DARK_GRAY(深灰)等。七.九 顏色與字體字體:java.awt.Font字體通常包括三個要素:一.字體名稱:如"CourierNew","宋體","楷體_GB二三一二"等。二.字體風(fēng)格:如"粗體","斜體","普通"等。三.字體大小:即字號,一般用整數(shù)表示。Font是AWT/Swing用地字體類。七.九 顏色與字體字體:java.awt.Font七.一零 布局管理Java以布局(Layout)地概念管理容器各組件地排列方式與相對位置。本節(jié)介紹地布局管理器接口與它地幾個實現(xiàn)類均位于java.awt包下。布局管理器:LayoutManager接口布局管理器是實現(xiàn)了LayoutManager接口地類地對象,其決定了容器各組件地大小與位置。只有容器型組件才有布局地概念,可通過容器對象地setLayout方法設(shè)置其布局。盡管大多數(shù)組件都有著為自身設(shè)置大小與對齊方式地方法,但組件最終地大小與位置卻取決于其所在容器地布局管理器。七.一零 布局管理布局管理器:LayoutManager接口布局管理器主要完成以下三個操作:一.計算容器地最小,首選與最大大小,并對容器地各個子組件應(yīng)用該布局——布局管理器將根據(jù)指定地約束,容器地屬以及子組件地最小,首選與最大大小等來完成此操作。若子組件自身是容器,則遞歸地對子組件完成此操作。二.標(biāo)記容器是否有效(容器地isValid方法為true則有效)——當(dāng)容器地所有子組件布局完畢且有效時,則該容器有效。對失效地容器調(diào)用validate方法將觸發(fā)容器及其所有子組件行布局操作,然后將容器標(biāo)記為有效。三.系統(tǒng)從內(nèi)向外確定程序各容器地大小,最終確定頂層容器地最佳大小。七.一零 布局管理布局管理器:LayoutManager接口編寫GUI程序地界面時,通常遵循下面地步驟:一.規(guī)劃界面。對于較為復(fù)雜地界面,應(yīng)在紙上粗略勾勒出各組件地位置與包含關(guān)系。二.從外層到內(nèi)層,創(chuàng)建合適地容器對象并為每個對象設(shè)置合適地布局。三.創(chuàng)建合適地組件對象,設(shè)置其大小,方向與位置等。四.將各組件加入相應(yīng)容器。五.設(shè)置頂層容器地大小,位置等,并讓其可見。流式布局:FlowLayout類流式布局將子組件放置為一行,并根據(jù)子組件地首選大小確定容器大小。若容器地水空位不足以將所有子組件放置在一行,則以多行放置,每行默認(rèn)水居對齊。流式布局是JPanel地默認(rèn)布局方式。七.一零 布局管理邊界布局:BorderLayout類邊界布局將容器劃分為北,南,東,西,五個區(qū)域,并分別以BorderLayout類自身地靜態(tài)常量NORTH,SOUTH,EAST,WEST,CENTER表示。改變?nèi)萜鞔笮r,北與南區(qū)域地組件在水方向上拉伸,位于東與西區(qū)域地組件在垂直方向上拉伸,位于心區(qū)域地組件同時在水與垂直方向上拉伸,以填充剩余空間。邊界布局通常用作界面最外層容器地布局方式,其也是JFrame地默認(rèn)布局方式。七.一零 布局管理網(wǎng)格布局:GridLayout類網(wǎng)格布局將容器劃分為若干行與列,每個網(wǎng)格具有相同地寬度與高度。向具有網(wǎng)格布局地容器添加組件時,組件按照從上至下,從左至右地順序添加,并占滿該網(wǎng)格。七.一零 布局管理網(wǎng)格包布局:GridBagLayout類網(wǎng)格包布局也將容器劃分為若干行與列,不同地是,網(wǎng)格包布局允許每個網(wǎng)格具有不同地寬度,高度,放置方式與額外空間調(diào)整行為等(這些統(tǒng)稱為"網(wǎng)格包約束"),且組件可以占據(jù)其地多行與多列。七.一零 布局管理網(wǎng)格包布局:GridBagLayout類將組件加入具有網(wǎng)格包布局方式地容器時,需要以參數(shù)指定網(wǎng)格包約束——java.awt包下GridBagConstraints類地對象,其包含地字段如表七?三二。一.對于每個要添加地組件,盡量為其對應(yīng)約束對象地gridx/gridy,gridwidth/gridheight字段指定值,且盡量不要指定為REMAINDER或RELATIVE,以方便日后維護。二.盡量不要復(fù)用網(wǎng)格包約束對象,否則很可能因忘記重新設(shè)置約束對象地某些字段而使程序出現(xiàn)難以察覺地錯誤。最好是每添加一個組件前,新創(chuàng)建一個約束對象并修改其某些字段——當(dāng)修改某個約束對象地字段時,不會影響后面添加地組件。三.通常情況下,每行(列)至少要指定一個網(wǎng)格地weightx(weighty)字段(且不為零),以保證當(dāng)容器大小變化時,組件具有符合要求地大小調(diào)整行為。四.盡管網(wǎng)格包布局地使用較為復(fù)雜,但GUI初學(xué)者仍應(yīng)能通過手工編寫代碼來完成界面設(shè)計,待熟練后可通過IDE提供地可視化GUI設(shè)計器以提高開發(fā)效率。七.一零 布局管理空布局:絕對定位空布局實際上是采用像素絕對定位地方式來確定組件在容器地位置與大小,嚴(yán)格來說,其并不是一種布局管理器。一般通過以下方式來使用空布局:一.對容器對象調(diào)用setLayout(null)方法,實參null表示空布局。二.調(diào)用組件對象地setLocation方法確定組件左上角相對于其所在容器左上角地坐標(biāo)。并調(diào)用setSize方法確定組件大小。此步驟也可以直接通過setBounds方法完成。七.一零 布局管理可視化GUI設(shè)計器可視化GUI設(shè)計器允許開發(fā)者以所見即所得地方式直接"繪制"程序界面,同時自動生成相應(yīng)地代碼,這無疑極大降低了復(fù)雜布局地使用難度,并提高了開發(fā)效率。七.一零 布局管理可視化GUI設(shè)計器七.一零 布局管理可視化GUI設(shè)計器一,可視化GUI設(shè)計器自動生成地代碼風(fēng)格可能與項目要求不一致,需要修改。二,軟件地具體互邏輯以及一些在運行時動態(tài)生成地復(fù)雜界面只有通過手工編寫相應(yīng)代碼才能實現(xiàn)。三,對于一些復(fù)雜布局,不僅需要開發(fā)者對這些布局地有關(guān)參數(shù)有著較為透徹地理解,而且需要具備一定地代碼編寫經(jīng)驗,才能正確合理地使用它們。綜上所述,建議初學(xué)者盡量通過手工編寫代碼地方式來完成程序地界面設(shè)計,待熟練掌握常用地組件,容器及布局管理器之后,再使用可視化GUI設(shè)計器以提高開發(fā)效率。七.一零 布局管理案例實踐七綜合使用合適地布局管理器,編寫一個仿QQ聊天。注意當(dāng)窗口大小改變時,各組件地變化行為要滿足相應(yīng)要求。七.一一 案例實踐七:仿QQ聊天窗口在程序界面編寫完成之后,還需要編寫處理代碼。Java地處理模型一.源(EventSource):地產(chǎn)生者或來源。例如,單擊了登錄按鈕,則登錄按鈕為源。源通常是界面地某個可互組件,也可以是定時器等其它對象。二.對象(EventObject):源產(chǎn)生地通常由用戶地操作觸發(fā),每個均被Java運行時環(huán)境封裝為對象。對象包含了與該有關(guān)地必要信息,如鼠標(biāo)按下產(chǎn)生時鼠標(biāo)指針?biāo)幍刈鴺?biāo)等。三.監(jiān)聽器(EventListener):用以接收與處理地對象。那些用以處理地代碼所在地類地對象就是監(jiān)聽器。七.一二 處理Java地處理模型Java運行時環(huán)境處理了所有與有關(guān)地底層邏輯,編程者只需關(guān)注以下幾個步驟:一.誰負(fù)責(zé)處理——哪個類地對象作為監(jiān)聽器。作為監(jiān)聽器地對象所屬地類應(yīng)實現(xiàn)相應(yīng)地監(jiān)聽器接口(可以有多個,即監(jiān)聽多種。二.監(jiān)聽誰產(chǎn)生地——為那些需要被監(jiān)聽地組件添加監(jiān)聽器對象。此步驟一般通過調(diào)用組件對象形如addXxxxxListener地方法并傳入相應(yīng)地監(jiān)聽器對象完成。三.如何處理——編寫處理地代碼。此步驟通過重寫監(jiān)聽器接口所定義地一個或多個抽象方法來指定處理地細(xì)節(jié)。七.一二 處理Java地處理模型七.一二 處理監(jiān)聽器類地編寫方式一.實現(xiàn)監(jiān)聽器接口類實現(xiàn)一個或多個監(jiān)聽器接口,并重寫這些接口所定義地抽象方法,如例七.二九。此種方式地優(yōu)點是編寫地監(jiān)聽器類可以監(jiān)聽多種(類可以實現(xiàn)多個接口)。二.繼承適配器類某些監(jiān)聽器接口定義了較多地抽象方法,如java.awt.event包下地WindowListener接口定

溫馨提示

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

最新文檔

評論

0/150

提交評論