Java 2實(shí)用教程課件(第3版第7章).ppt
《Java 2實(shí)用教程課件(第3版第7章).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java 2實(shí)用教程課件(第3版第7章).ppt(43頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第7章 AWT組件及事件處理,7.1 Java窗口 7.2 文本框 7.3 內(nèi)部類(lèi)實(shí)例做監(jiān)視器 7.4 按鈕與標(biāo)簽 7.5 菜單項(xiàng) 7.6 文本區(qū) 7.7 面板 7.8 布局 7.9 畫(huà)布,7.10 選擇型組件 7.11 Component類(lèi)的常用方法 7.12 窗口事件 7.13 鼠標(biāo)事件 7.14 焦點(diǎn)事件 7.15 鍵盤(pán)事件 7.16 使用剪貼板 7.17 打印 7.18 綜合實(shí)例,,,圖形用戶(hù)界面,通過(guò)圖形用戶(hù)界面(GUI:Graphics User Interface),用戶(hù)和程序之間可以方便地進(jìn)行交互。Java的抽象窗口工具包(AWT:Abstract Window Toolkit)中包含了許多類(lèi)來(lái)支持GUI設(shè)計(jì)。AWT由Java的java.awt包提供,該包中有許多用來(lái)設(shè)計(jì)GUI的組件類(lèi),如:按鈕、菜單、列表、文本框等組件類(lèi),同時(shí)它還包含窗口、面板等容器類(lèi)。,,,容器類(lèi)(Container)和組件類(lèi)(Component),Java.awt包中一部分類(lèi)的層次關(guān)系如圖所示,,,7.1 Java窗口,Frame類(lèi)是Container類(lèi)的間接子類(lèi)。當(dāng)需要一個(gè)窗口時(shí),可使用Frame或其子類(lèi)創(chuàng)建一個(gè)對(duì)象。窗口也是一個(gè)容器,可以向窗口添加組件。需要注意的是,窗口默認(rèn)地被系統(tǒng)添加到顯示器屏幕上,因此,不允許將一個(gè)窗口添加到另一個(gè)容器中。,,,1. Frame常用方法,1.Frame() 該構(gòu)造方法可以創(chuàng)建一個(gè)無(wú)標(biāo)題的窗口,窗口的默認(rèn)布局為BorderLayout布局。 2.Frame(String s) 該構(gòu)造方法可以創(chuàng)建一個(gè)標(biāo)題為s的窗口,窗口的默認(rèn)布局為BorderLayout布局。 3.public void setBounds(int a,int b,int width,int height) 窗口調(diào)用該方法可以設(shè)置出現(xiàn)在屏幕上時(shí)的初始位置是(a,b),即距屏幕左面a個(gè)像素、距屏幕上方b個(gè)像素;窗口的寬是width,高是height。 4.public void setSize(int width,int height) 設(shè)置窗口的大小,窗口在屏幕出現(xiàn)是默認(rèn)位置是(0,0)。 5.public void setVisible(boolean b) 設(shè)置窗口是可見(jiàn)還是不可見(jiàn),窗口默認(rèn)是不可見(jiàn)的。 6.public void setResizable(boolean b) 設(shè)置窗口是否可調(diào)整大小,窗口默認(rèn)是可調(diào)整大小的。,,,2.菜單條、菜單、菜單項(xiàng),java.awt包中的Menubar類(lèi)是負(fù)責(zé)創(chuàng)建菜單條的,即Menubar的一個(gè)實(shí)例就是一個(gè)菜單條。Frame類(lèi)有一個(gè)將菜單條放置到窗口中的方法:setMenuBar(MenuBar bar); java.awt包中的Menu類(lèi)是負(fù)責(zé)創(chuàng)建菜單的,即Menu的一個(gè)實(shí)例就是一個(gè)菜單 java.awt包的MunuItem類(lèi)負(fù)責(zé)創(chuàng)建菜單項(xiàng),即MenuItem的一個(gè)實(shí)例就是一個(gè)菜單項(xiàng),,,7.3 文本框,java.awt包中的類(lèi)TextField類(lèi)創(chuàng)建文本框. 用戶(hù)可以在文本框輸入單行的文本 .,,,1.TextField類(lèi)的主要方法,TextField(int x) 如果使用這個(gè)構(gòu)造方法創(chuàng)建文本框?qū)ο?,文本框中的可?jiàn)字符序列的長(zhǎng)度為 x個(gè)機(jī)器字符長(zhǎng)。文本框是可編輯的,用戶(hù)可以在文本框中輸入若干個(gè)字符。 TextField(String s ) 如果使用這個(gè)構(gòu)造方法創(chuàng)建文本框?qū)ο?,則文本框的初始字符串為s。文本框是可編輯的,可以在文本框中輸入若干個(gè)字符。 public void setText(String s) 文本框?qū)ο笳{(diào)用該方法可以設(shè)置文本框中的文本為參數(shù)s指定的文本,文本框中先前的文本將被清除。 public String getText() 文本框?qū)ο笳{(diào)用該方法可以獲取文本框中的文本。 public void addActionListener(ActionListener l) 文本框?qū)ο笳{(diào)用該方法可以向文本框增加動(dòng)作監(jiān)視器(將監(jiān)視器注冊(cè)到文本框)。,,,2.文本框上的ActionEvent事件,學(xué)習(xí)組件除了了解組件的屬性和功能外,一個(gè)更重要的方面是學(xué)習(xí)怎樣處理組件上發(fā)生的界面事件。 在學(xué)習(xí)處理事件時(shí),必須很好地掌握事件源、監(jiān)視器、處理事件的接口這三個(gè)概念。 通過(guò)處理文本框這個(gè)具體的組件上的事件,來(lái)掌握處理事件的基本原理。,,,Java的事件處理模式,事件源 能夠產(chǎn)生事件的對(duì)象都可以成為事件源,如文本框、按鈕、下拉式列表等。也就是說(shuō),事件源必須是一個(gè)對(duì)象,而且這個(gè)對(duì)象必須是Java認(rèn)為能夠發(fā)生事件的對(duì)象。 監(jiān)視器 需要一個(gè)對(duì)象對(duì)事件源進(jìn)行監(jiān)視,以便對(duì)發(fā)生的事件作出處理。事件源通過(guò)調(diào)用相應(yīng)的方法將某個(gè)對(duì)象作為自己的監(jiān)視器。例如,對(duì)于文本框,這個(gè)方法是: addActionListener(監(jiān)視器); 創(chuàng)建該監(jiān)視器對(duì)象的類(lèi)必須聲明實(shí)現(xiàn)相應(yīng)的接口 處理事件的接口 在文本框獲得輸入焦點(diǎn)之后,如果用戶(hù)按回鍵,Java運(yùn)行系統(tǒng)就自動(dòng)用ActionEvent類(lèi)創(chuàng)建了一個(gè)對(duì)象,即發(fā)生了ActionEvent事件 .當(dāng)事件源發(fā)生事件時(shí),監(jiān)視器就自動(dòng)調(diào)用執(zhí)行被類(lèi)實(shí)現(xiàn)的某個(gè)接口方法 .,,,處理事件示意圖,,,,7.4按鈕與標(biāo)簽,標(biāo)簽的功能是只顯示文本,不能動(dòng)態(tài)地編輯文本。Lalel類(lèi)的實(shí)例就是一個(gè)標(biāo)簽. Java.awt包中的Button類(lèi)是專(zhuān)門(mén)用來(lái)建立按鈕的。即Button類(lèi)創(chuàng)建的一個(gè)對(duì)象就是一個(gè)按鈕。 按鈕可以發(fā)生ActionEvent事件,當(dāng)按鈕獲得監(jiān)視器之后,用鼠標(biāo)單擊按鈕,就發(fā)生ActionEven事件.,,,7.5菜單項(xiàng),單擊某個(gè)菜單項(xiàng)可以發(fā)生ActionEvent事件,因此,我們可以通過(guò)處理ActionEvent事件實(shí)現(xiàn)我們想要進(jìn)行的操作。 可以使用MenuShotcut類(lèi)為菜單項(xiàng)設(shè)置快捷鍵,該類(lèi)的一個(gè)構(gòu)造方法是: MenuShotcut (int key); 其中key可以取值:KeyEvent.VK_A~ KeyEvent.VK_Z; 菜單項(xiàng)使用setShortcut(MenuShortcut k)方法來(lái)設(shè)置快捷鍵。,,,7.6文本區(qū),java.awt包中的類(lèi)TextArea類(lèi)是專(zhuān)門(mén)用來(lái)建立文本區(qū)的,即TextArea創(chuàng)建的一個(gè)對(duì)象稱(chēng)做一個(gè)文本區(qū)。用戶(hù)可以在文本區(qū)輸入多行的文本。,,,1. TextArea類(lèi)主要方法,TextArea(int x,int y) 使用這個(gè)構(gòu)造方法創(chuàng)建文本區(qū)對(duì)象,文本框可見(jiàn)行數(shù)和列數(shù)數(shù)分別為x和y。文本區(qū)有水平和垂直滾動(dòng)條。 public void setText(String s) 文本區(qū)對(duì)象調(diào)用該方法可以將文本區(qū)中的文本設(shè)置為參數(shù)s指定的文本,文本區(qū)中先前的文本將被清除。 public String getText() 文本區(qū)對(duì)象調(diào)用該方法可以獲取文本區(qū)中的文本。 public void append(String s) 文本區(qū)對(duì)象調(diào)用該方法可以在文本區(qū)中尾加文本 . addTextListener(TextListener) 文本區(qū)對(duì)象調(diào)用該方法可以向文本框增加文本監(jiān)視器。,,,2.文本區(qū)上的TextEvent事件,對(duì)于文本區(qū)事件源,可以發(fā)生TextEvent事件。當(dāng)文本區(qū)獲得監(jiān)視器之后,在文本區(qū)域中改變文本的內(nèi)容,如鍵入字符、刪除字符時(shí),TextEvent類(lèi)將自動(dòng)創(chuàng)建一個(gè)事件對(duì)象。 發(fā)生TextEvent事件的事件源獲得監(jiān)視器的方法是addTextListener(監(jiān)視器);, 由于文本區(qū)可以發(fā)生TextEvent事件,所以TextArea類(lèi)提供了addTextListener方法。 處理發(fā)生TextEvent 事件的接口是TextListener,該接口中只有一個(gè)的方法: textValueChanged (TextEvent e) 創(chuàng)建文本區(qū)監(jiān)視器的類(lèi)必須要實(shí)現(xiàn)TextListener接口。當(dāng)文本區(qū)發(fā)生TextEvent事件時(shí),監(jiān)視器將自動(dòng)調(diào)用方法: textValueChanged (TextEvent e) 對(duì)發(fā)生的事件作出處理。,,,7.7面板,java.awt包的Panel類(lèi)是Container(容器)的子類(lèi),因此Panel類(lèi)及其子類(lèi)的實(shí)例也是一個(gè)容器,Panel型容器的默認(rèn)布局是FlowLayout型布局。Panel類(lèi)創(chuàng)建的對(duì)象稱(chēng)做面板,我們經(jīng)常在一個(gè)面板里添加若干個(gè)組件后,再把面板放到另一個(gè)容器里。 java.awt包中的ScrollPane類(lèi)也是Container類(lèi)的子類(lèi),因此該類(lèi)創(chuàng)建的對(duì)象也是一個(gè)容器,稱(chēng)為滾動(dòng)面板。我們可以把一個(gè)組件放到一個(gè)滾動(dòng)面板中,然后通過(guò)滾動(dòng)條來(lái)觀察這個(gè)組件。與Panel創(chuàng)建的容器所不同的是,ScrollPane帶有滾動(dòng)條,而且只能向滾動(dòng)面板添加一個(gè)組件。,,,7.8布局,當(dāng)把組件添加到容器中時(shí),希望控制組件在容器中的位置,這就需要學(xué)習(xí)布局設(shè)計(jì)的知識(shí)。我們將分別介紹java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout布局類(lèi)和java.swing.border包中的BoxLayout布局類(lèi)。 容器可以使用方法: setLayout(布局對(duì)象); 來(lái)設(shè)置自己的布局。,,,1. FlowLayout布局,FlowLayout類(lèi)創(chuàng)建的對(duì)象稱(chēng)做FlowLayout型布局。FlowLayout型布局是Panel型容器的默認(rèn)布局,即Panel及其子類(lèi)創(chuàng)建的容器對(duì)象,如果不專(zhuān)門(mén)為其指定布局,則它們的布局就是FlowLayout型布局。 如果一個(gè)容器使用這個(gè)FlowLayout型布局,組件按照加入的先后順序從左向右排列,一行排滿(mǎn)之后就轉(zhuǎn)到下一行繼續(xù)從左至右排列 .,,,2. BorderLayout布局,BorderLayout 布局是Window型容器的默認(rèn)布局,例如Frame、Dialog都是Window類(lèi)的子類(lèi),它們的默認(rèn)布局都是BorderLayout 布局。 如果一個(gè)容器使用這種布局,那么容器空間簡(jiǎn)單地劃分為東、西、南、北、中五個(gè)區(qū)域,中間的區(qū)域最大。,,,3. CardLayout 布局,使用CardLayout 的容器可以容納多個(gè)組件,但是實(shí)際上同一時(shí)刻容器只能從這些組件中選出一個(gè)來(lái)顯示,就像一疊“撲克牌”每次只能顯示最上面一張一樣,這個(gè)被顯示的組件將占據(jù)所有的容器空間,依次排序。,,,4. GridLayout布局,GridLayout的布局策略是把容器劃分成若干行乘若干列的網(wǎng)格區(qū)域,組件就位于這些劃分出來(lái)的小格中。GridLayout比較靈活,劃分多少網(wǎng)格由程序自由控制,而且組件定位也比較精確. 由于GridLayout布局中每個(gè)網(wǎng)格都是相同大小并且強(qiáng)制組件與網(wǎng)格的大小相同,使得容器中的每個(gè)組件也都是相同的大小,顯得很不自然。為了克服這個(gè)缺點(diǎn),你可以使用容器嵌套。,,,5. BoxLayout布局,盒式布局的容器將組件排列在一行或一列,這取決于創(chuàng)建盒式布局對(duì)象時(shí),是否指定了是行排列還是列排列。 使用行(列)型盒式布局的容器將組件排列在一行(列),組件按加入的先后順序從左(上)向右(下)排列,容器的兩端是剩余的空間。和FlowLayou布局不同的是,使用行型盒式布局的容器只有一行(列),即使組件再多,也不會(huì)延伸到下一行(列),這些組件可能會(huì)被縮小大小,緊縮在這一行(列)中。,,,7.9畫(huà)布,java.awt包中的類(lèi)Canvas負(fù)責(zé)創(chuàng)建畫(huà)布對(duì)象。創(chuàng)建畫(huà)布對(duì)象的常用辦法是用Canvas的子類(lèi)來(lái)創(chuàng)建畫(huà)布對(duì)象,并在子類(lèi)中重寫(xiě)父類(lèi)的public void paint(Graphics g)方法。該方法是Component類(lèi)的一個(gè)方法,可以在其子類(lèi)中重寫(xiě)這個(gè)方法,當(dāng)重寫(xiě)這個(gè)方法時(shí),參數(shù)g是自動(dòng)實(shí)例化的,這樣我們就可以在子類(lèi)中使用 g調(diào)用相應(yīng)方法,比如畫(huà)串、畫(huà)圖形、圖像等 .,,,7.5選擇型組件,選擇框 選擇框提供兩種狀態(tài),一種是選中,另一種是未選中。java.awt包中的Checkbox用來(lái)建立選擇框,即Checkbox創(chuàng)建的一個(gè)對(duì)象就是一個(gè)選擇框。 選擇框可以發(fā)生ItemEvent事件,發(fā)生ItemEvent事件的事件源獲得監(jiān)視器的方法是:addItemListener(監(jiān)視器) . 創(chuàng)建監(jiān)視器的類(lèi)必須實(shí)現(xiàn)ItemListener接口,該接口中只有一個(gè)的方法。當(dāng)在選擇框發(fā)生ItemEvent事件時(shí),監(jiān)視器將自動(dòng)調(diào)用接口方法: temStateChanged(ItemEvent e) 對(duì)發(fā)生的事件作出處理。,,,下拉列表 Choice創(chuàng)建的一個(gè)對(duì)象稱(chēng)作一個(gè)下拉列表組件,它是用戶(hù)十分熟悉的一個(gè)組件。用戶(hù)可以在下拉列表看到第一個(gè)選項(xiàng)和它旁邊的箭頭按鈕,當(dāng)用戶(hù)單擊箭頭按鈕時(shí),選項(xiàng)列表打開(kāi)。 下拉式列表可以發(fā)生ItemEvent事件。當(dāng)下拉式列表獲得監(jiān)視器之后,用戶(hù)在下拉列表選項(xiàng)列表中選中某個(gè)選項(xiàng)時(shí)就發(fā)生ItemEvent事件.,,,滾動(dòng)列表 java.awt包中的類(lèi)List類(lèi)建立滾動(dòng)列表 . 滾動(dòng)列表和下拉列表的另一不同之處是,滾動(dòng)列表除了可以發(fā)生ItemEvent事件外,還可以發(fā)生ActionEvent事件。當(dāng)用鼠標(biāo)單擊滾動(dòng)列表的某個(gè)選項(xiàng)后,發(fā)生ItemEvent事件;當(dāng)用鼠標(biāo)雙擊某個(gè)選項(xiàng)后,發(fā)生ActionEvent事件。,,,7.11 Component類(lèi)的常用方法,Component類(lèi)是所有組件的父類(lèi),這一節(jié)介紹Component類(lèi)的常用方法,,,1.組件的顏色,public void setBackground(Color c) 設(shè)置組件的背景色。 public void setForeground(Color c) 設(shè)置組件的前景色。 public Color getBackground() 獲取組件的背景色。 public Color getForeground() 獲取組件的前景色。,,,2.組件的字體,public void setFont(Font f) 組件調(diào)用該方法設(shè)置組件上的字體。例如,文本組件調(diào)用該方法可以設(shè)置文本組件中的字體。 public Font getFont() 組件調(diào)用該方法獲取組件上的字體。,,,3.組件的大小與位置,public void setSize(int width,int height) 組件調(diào)用該方法設(shè)置組件的大小,參數(shù)width指定組件的寬度,height指定組件的高度。 public void setLocation(int x,int y) 組件調(diào)用該方法設(shè)置組件在容器中的位置,包含該組件的容器都有默認(rèn)的坐標(biāo)系,容器的坐標(biāo)系的左上角的坐標(biāo)是(0,0),參數(shù)x,y指定該組件的左上角在容器的坐標(biāo)系中的坐標(biāo),即組件距容器的左邊界 x個(gè)像素,距容器的上邊界 y 個(gè)像素。 public Dimension getSize() 組件調(diào)用該方法返回一個(gè)Dimension對(duì)象的引用,該對(duì)像實(shí)體中含有名字是width 和height的成員變量,方法返回的Dimension 對(duì)象的width的值就是組件的寬度、height的值就是當(dāng)前組件的高度。 public Point getLocation() 組件調(diào)用該方法返回一個(gè)Point對(duì)象的引用,該對(duì)像實(shí)體中含有名字是x 和y的成員變量,方法返回的Point對(duì)象的x,y的值就是組件的左上角在容器的坐標(biāo)系中的x坐標(biāo)和y坐標(biāo)。 public void setBounds(int x,int y,int width,int height) 組件調(diào)用該方法設(shè)置組件在容器中的位置和組件的大小。該方法相當(dāng)于setSize方法和setLocation方法的組合。 public Rectangle getBounds() 組件調(diào)用該方法返回一個(gè)Rectangle對(duì)象的引用,該對(duì)象實(shí)體中含有名字是x、y、width 和height的成員變量,方法返回的Rectangle對(duì)象的x,y的值就是組件的左上角在容器的坐標(biāo)系中的x坐標(biāo)和y坐標(biāo),width和height的值就是當(dāng)前組件的寬度和高度。,,,4.組件的激活與可見(jiàn)性,public void setEnabled(boolean b) 組件調(diào)用該方法可以設(shè)置組件是否可被激活,當(dāng)參數(shù)b取值true時(shí),組件可以被激活,當(dāng)參數(shù)b取值false 時(shí),組件不可激活。默認(rèn)情況下,組件是可以被激活的。 public void setVisible(boolean) 設(shè)置組件在該容器中的可見(jiàn)性,當(dāng)參數(shù)b取值true時(shí),組件在容器中可見(jiàn),當(dāng)參數(shù)b取值false 時(shí),組件在容器中不可見(jiàn)。除了Window型組件外,其它類(lèi)型組件默認(rèn)是可見(jiàn)的。,,,5.組件上的光標(biāo),public void setCursor(Cursor c) 設(shè)置鼠標(biāo)指向組件時(shí)的光標(biāo)形狀。 可以使用 Cursor類(lèi)的類(lèi)方法直接獲得一個(gè)光標(biāo)對(duì)象,例如: Cursor c=Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);,,,6.paint方法與repaint方法,調(diào)用repaint()方法時(shí),repaint()方法會(huì)再去調(diào)用update(Graphics g)方法。update(Graphics g)方法也是Component類(lèi)中的一個(gè)方法,這個(gè)方法的功能是:清除paint()方法以前所畫(huà)的內(nèi)容,然后再調(diào)用paint方法。因此我們可以在子類(lèi)中重寫(xiě)update方法(即隱藏父類(lèi)的方法),根據(jù)需要來(lái)清除哪些部分或保留哪些部分。,,,7.12窗口事件,Frame是Window的子類(lèi),凡是 Window子類(lèi)創(chuàng)建的對(duì)象都可以發(fā)生WindowEvent類(lèi)型事件,即窗口事件。 當(dāng)一個(gè)Frame窗口被激活、撤消激活、打開(kāi)、關(guān)閉、圖標(biāo)化或撤消圖標(biāo)化時(shí),就引發(fā)了窗口事件,即WindowEvent創(chuàng)建一個(gè)窗口事件對(duì)象。WindowEvent創(chuàng)建的事件對(duì)象調(diào)用getWindow()方法可以獲取發(fā)生窗口事件的窗口。窗口使用addWindowlistener方法獲得監(jiān)視器,創(chuàng)建監(jiān)視器對(duì)象的類(lèi)必須實(shí)現(xiàn)WindowListener接口,該接口中有7個(gè)不同的方法 .,,,1. WindowListener接口中的方法,public void windowActivated(WindowEvent e) 當(dāng)窗口從非激活狀態(tài)到激活時(shí),窗口的監(jiān)視器調(diào)用該方法。 public void windowDeactivated(WindowEvent e) 當(dāng)窗口激活狀態(tài)到非激活狀態(tài)時(shí),窗口的監(jiān)視器調(diào)用該方法。 public void windowClosing(WindowEvent e) 當(dāng)窗口正在被關(guān)閉時(shí),窗口的監(jiān)視器調(diào)用該方法。 public void windowClosed(WindowEvent e) 當(dāng)窗口關(guān)閉后,窗口的監(jiān)視器調(diào)用該方法。 public void windowIconified(WindowEvent e) 當(dāng)窗口圖標(biāo)化時(shí),窗口的監(jiān)視器調(diào)用該方法。 public void windowDeiconified(WindowEvent e) 當(dāng)窗口撤消圖標(biāo)化時(shí),窗口的監(jiān)視器調(diào)用該方法。 public void windowOpened(WindowEvent e) 當(dāng)窗口打開(kāi)時(shí),窗口的監(jiān)視器調(diào)用該方法。,,,2. WindowAdapter適配器,適配器可以代替接口來(lái)處理事件,當(dāng)Java提供處理事件的接口中多于一個(gè)方法時(shí),Java相應(yīng)地就提供一個(gè)適配器類(lèi),比如WindowAdapter類(lèi)。適配器已經(jīng)實(shí)現(xiàn)了相應(yīng)的接口,例如WindowAdapter類(lèi)實(shí)現(xiàn)了WindowListener接口。因此,可以使用WindowAdapte的子類(lèi)創(chuàng)建的對(duì)象做監(jiān)視器,在子類(lèi)中重寫(xiě)所需要的接口方法即可,,,7.13鼠標(biāo)事件,任何組件上都可以發(fā)生鼠標(biāo)事件,如:鼠標(biāo)進(jìn)入組件、退出組件、在組件上方單擊鼠標(biāo)、拖動(dòng)鼠標(biāo)等都觸發(fā)組件發(fā)生鼠標(biāo)事件,也就是說(shuō),組件可以成為發(fā)生鼠標(biāo)事件的事件源。,,,1.MouseListener接口,使用MouseListener接口可以處理5種操作觸發(fā)的鼠標(biāo)事件: (1)在事件源上按下鼠標(biāo)鍵。 (2)在事件源上釋放鼠標(biāo)鍵。 (3)在事件源上擊鼠標(biāo)鍵。 (4)鼠標(biāo)進(jìn)入事件源。 (5)鼠標(biāo)退出事件源。 鼠標(biāo)事件的類(lèi)型是MouseEvent,即當(dāng)發(fā)生鼠標(biāo)事件時(shí),MouseEvent類(lèi)自動(dòng)創(chuàng)建一個(gè)事件對(duì)象。,,,MouseListener接口中的方法,(1)mousePressed(MouseEvent) 負(fù)責(zé)處理在組件上按下鼠標(biāo)觸發(fā)的鼠標(biāo)事件,當(dāng)在組件上按下鼠標(biāo)時(shí),監(jiān)視器將自動(dòng)調(diào)用接口中的這個(gè)方法對(duì)事件作出處理。 (2)mouseReleased(MouseEvent) 負(fù)責(zé)處理在組件上釋放鼠標(biāo)觸發(fā)的鼠標(biāo)事件,當(dāng)在組件上釋放鼠標(biāo)時(shí),監(jiān)視器將自動(dòng)調(diào)用接口中的這個(gè)方法對(duì)事件作出處理。 (3)mouseEntered(MouseEvent) 負(fù)責(zé)處理鼠進(jìn)入組件觸發(fā)的鼠標(biāo)事件,當(dāng)鼠標(biāo)進(jìn)入組件上方時(shí),監(jiān)視器將自動(dòng)調(diào)用接口中的這個(gè)方法對(duì)事件作出處理。 (4)mouseExited(MouseEvent) 負(fù)責(zé)處理鼠標(biāo)離開(kāi)組件觸發(fā)的鼠標(biāo)事件,當(dāng)鼠標(biāo)離開(kāi)組件時(shí),監(jiān)視器自動(dòng)調(diào)用接口中的這個(gè)方法對(duì)事件作出處理。 (5)mouseClicked(MouseEvent) 負(fù)責(zé)處理在組件上單擊或連擊鼠標(biāo)觸發(fā)的鼠標(biāo)事件,當(dāng)單擊或連擊鼠標(biāo)時(shí),監(jiān)視器自動(dòng)調(diào)用接口中的這個(gè)方法對(duì)事件作出處理。,,,2.MouseMotionListener接口,使用MouseMotionListener接口可以處理以下兩種操作觸發(fā)的鼠標(biāo)事件: (1)在事件源上拖動(dòng)鼠標(biāo)。 (2)在事件源上移動(dòng)鼠標(biāo)。 MouseMotionListener接口中有如下方法: (1)mouseDragged(MouseEvent) 負(fù)責(zé)處理在組件上拖動(dòng)鼠標(biāo)觸發(fā)的鼠標(biāo)事件,當(dāng)在組件上拖動(dòng)鼠標(biāo)時(shí),監(jiān)視器調(diào)用接口中的這個(gè)方法對(duì)事件作出處理。 (2)mouseMoved(MouseEvent) 負(fù)責(zé)處理在組件上運(yùn)動(dòng)鼠標(biāo)觸發(fā)的鼠標(biāo)事件,當(dāng)在組件上運(yùn)動(dòng)鼠標(biāo)時(shí),監(jiān)視器調(diào)用接口中的這個(gè)方法對(duì)事件作出處理,,,7.14 焦點(diǎn)事件,組件可以觸發(fā)焦點(diǎn)事件。組件可以使用 public void addFocusListener(FocusListener listener) 增加焦點(diǎn)事件監(jiān)視器。 當(dāng)組件獲得焦點(diǎn)監(jiān)視器后,如果組件從無(wú)輸入焦點(diǎn)變成有輸入焦點(diǎn)或從有輸入焦點(diǎn)變成無(wú)輸入焦點(diǎn)都會(huì)觸發(fā)FocusEvent事件。創(chuàng)建監(jiān)視器的類(lèi)必須要實(shí)現(xiàn)FocusListener 接口,該接口有兩個(gè)方法: public void focusGained(FocusEvent e) public void focusLost(FocusEvent e) 當(dāng)組件從無(wú)輸入焦點(diǎn)變成有輸入焦點(diǎn)觸發(fā)FocusEvent事件時(shí),監(jiān)視器調(diào)用類(lèi)實(shí)現(xiàn)的接口方法:focusGained(FocusEvent e);當(dāng)組件從有輸入焦點(diǎn)變成無(wú)輸入焦點(diǎn)觸發(fā)FocusEvent事件時(shí),監(jiān)視器調(diào)用類(lèi)實(shí)現(xiàn)的接口方法:focusLost(FocusEvent e)。,,,7.15 鍵盤(pán)事件,當(dāng)按下、釋放或敲擊鍵盤(pán)上一個(gè)鍵時(shí)就發(fā)生了鍵盤(pán)事件,在Java1.2事件模式中,必須要有發(fā)生事件的事件源。當(dāng)一個(gè)組件處于激活狀態(tài)時(shí),敲擊鍵盤(pán)上一個(gè)鍵就導(dǎo)致這個(gè)組件上發(fā)生了鍵盤(pán)事件。 事件源使用addKeyListener方法獲得監(jiān)視器。 使用KeyListener接口處理鍵盤(pán)事件 .接口KeyListener中有3個(gè)方法: public void keyPressed(KeyEvent e), public void keyTyped(KeyEvent e), public void KeyReleased(KeyEvent e)。,,,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Java 2實(shí)用教程課件第3版第7章 實(shí)用教程 課件
鏈接地址:http://appdesigncorp.com/p-2852420.html