javajava圖形用戶界面與事件處理.ppt
《javajava圖形用戶界面與事件處理.ppt》由會員分享,可在線閱讀,更多相關(guān)《javajava圖形用戶界面與事件處理.ppt(56頁珍藏版)》請在裝配圖網(wǎng)上搜索。
21 20 第1頁 第五章 java圖形用戶界面與事件處理 21 20 第2頁 知識點 了解GUI相關(guān)概念掌握常用AWT組件的屬性及用法掌握Java外觀布局的管理與控制掌握事件處理方法 21 20 第3頁 本章主要介紹以下4個部分的內(nèi)容 一 JavaAWT AbstractWindowToolkit 組件介紹二 AWT中的常用組件及用法三 Java外觀布局的管理與控制四 Java事件與事件處理 21 20 第4頁 面向?qū)ο蟮膱D形用戶界面 基于 面向?qū)ο?的思想互相交換信息 即盡可能在屏幕上用形象的圖標和窗口等來代表有用的資源和可啟用的對象 圖形界面對象 代表特定的命令 過程 資源 提示信息等圖標 Icon 標簽 Label 窗口 Window 菜單 Menu 菜單項 MenuItem 按鈕 Button 文本框 TextField 列表框 List 圖形用戶界面 21 20 第5頁 一 JavaAWT AbstractWindowToolkit 組件介紹 通過圖形用戶界面 GraphicalUserInterface GUI 用戶和程序之間可以方便友好地進行交互 在Java語言中 Java的基礎類 JavaFoundationClassed JFC 是開發(fā)GUI的API集 它包括以下幾個部分 1 抽象窗口工具包 AWT Java開發(fā)用戶界面最初的工具包 是建立JFC的主要基礎 2 2DAPI 實現(xiàn)高質(zhì)量的二維圖形 3 Swing組件 建立在AWT之上 新的 功能更強大的圖形組件包 21 20 第6頁 1 抽象窗口工具包 AWT 21 20 第7頁 Graphics類還提供了一系列的方法來繪制幾何圖形 文字 圖象以及動畫 Lines drawLine Rectangles drawRect fillRect Raisedorloweredrectangles draw3DRect 和fill3DRect Ovals drawOval 和fillOval Arcs drawArc 和fillArc Polygons drawPolygon 和fillPolygon Text drawString Image drawImage Animation 通過一個循環(huán)來完成 2 2DAPI 21 20 第8頁 javax swing中的組件JLabel顯示一行文字 可帶圖標JTextField用戶讓用戶輸入一行文字的構(gòu)件JButton用于點擊執(zhí)行命令JCheckBox復選框JRadioButton單選按鈕JCombox下拉列表框供選取JList一組列表項供選擇 3 Swing組件 21 20 第9頁 二 AWT中的常用組件及用法 1 容器 Container 一個Java的圖形用戶界面的最基本組成部分就是組件 Component 組件是一個可以以圖形化的方式顯示在屏幕上并能與用戶進行交互的對象 比如Button Checkbox Choice Label List等 組件不能獨立地顯示出來 必須將組件放在特定的對象中才能顯示出來 這就是包含組件的組件 Container 容器 容器Container是Component的子類 它本身也是一個組件 具有組件所有的性質(zhì) 另外 它還具有容納其他組件和容器的功能 21 20 第10頁 Container類的功能 Container類是由Component類派生出來的一種特殊類 用來表示各種GUI組件的容器 其主要功能包括 組件的管理 方法add 可以向其中添加一個組件 remove 刪除其中的一個組件 布局管理 每個Container類都和一個布局管理器相聯(lián) 以確定其中組件的布局 Container類可以通過setLayout 方法設置某種布局方式 常見的Container類有 Frame Panel Applet等 二 AWT中的常用組件及用法 1 容器 Container 21 20 第11頁 二 AWT中的常用組件及用法 1 容器 Container 21 20 第12頁 二 AWT中的常用組件及用法 1 容器 Container 21 20 第13頁 AWT使用Container類來定義最基本的組件容器 它有兩個常用的子類 Window類和Panel類 Window類還有兩個子類 定義對話框 用Dialog子類 定義一般意義的窗口 用Frame類 Frame可以用其構(gòu)造方法Fame String 來生成 其標題由String參數(shù)指定 一個Frame剛被創(chuàng)建后 其初始大小為 0 0 而且是不可見的 所以為了使Frame顯示出來 必須在程序中顯式地設置一下它的大小 二 AWT中的常用組件及用法 1 容器 Container 21 20 第14頁 Panel可以使程序員更方便地組織自己的組件 得到賞心悅目的布局 Panel可以使用構(gòu)造方法Panel 生成 當一個Panel對象被創(chuàng)建后 必須放在Window和Frame中才能可見 使用add 方法就可以將Panel添加到其他容器中 Applet是Panel的子類 因此在小應用程序里可以直接加入構(gòu)件 而一般的應用程序必須先定義構(gòu)件容器 小應用程序在瀏覽器中所顯示的區(qū)域就是Panel 所占的尺寸就是缺省的Panel尺寸 瀏覽器本身也可以看作是一個容器 二 AWT中的常用組件及用法 1 容器 Container 21 20 第15頁 importjava awt publicclassMyFrameextendsFrame publicMyFrame Stringstr super str setSize 500 500 setBackground Color blue publicvoidshowDialog FileDialogfd newFileDialog this FileDialog fd setVisible true publicstaticvoidmain Stringargs MyFramefr newMyFrame Frame DialogTest fr setVisible true fr showDialog MyFrame java 21 20 第16頁 AppletWindow java importjava awt importjava applet publicclassAppletWindowextendsApplet publicvoidinit Buttonb1 newButton 確定 add b1 Buttonb2 newButton 取消 add b2 21 20 第17頁 二 AWT中的常用組件及用法 標簽 Label 靜態(tài)文字 多用于指示信息 無事件 單行文本框 TextField 只能顯示一行信息 會產(chǎn)生多種事件 按鈕 Button 可點擊的用戶界面組件 當組件被點擊是 產(chǎn)生AcitonEvent事件 21 20 第18頁 二 AWT中的常用組件及用法 復選框 Checkbox 提供簡單的 on off 開關(guān) 同時旁邊還可以顯示說明信息 當復選框狀態(tài)發(fā)生變化時 會產(chǎn)生ItemEvent事件 復選框組 CheckboxGroup 單選框 RadioButton 當多個復選框組成一組時 就形成了單選框 復選框組中的復選框之間是相互關(guān)聯(lián)的 每次有且只有一個處于選中狀態(tài) 21 20 第19頁 列表 List 列表提供了很多文本選項 可以同時看到多項 也有滾動條的支持 并且可以單選或多選 當用戶單選或多選時 會產(chǎn)生ItemEvent事件 下拉式菜單 Choice 在下拉式菜單中有多個選項 但每次只能選擇一項 當選擇發(fā)生時 會產(chǎn)生ItemEvent事件 文本輸入?yún)^(qū) TextArea 可以顯示多行信息 并且有滾動條支持 按回車鍵后并不產(chǎn)生事件 如果要判斷是否完成輸入 需要用其他方法 如用一個結(jié)束按鈕 二 AWT中的常用組件及用法 21 20 第20頁 Checkboxadd newCheckbox one null true add newCheckbox two null false add newCheckbox three null false CheckboxGroupCheckboxGroupcbg newCheckboxGroup add newCheckbox one cbg true add newCheckbox two cbg false add newCheckbox three cbg false ChoiceChoicech newChoice ch add Green ch add Red ch add Blue add ch 二 AWT中的常用組件及用法 21 20 第21頁 ListListlst newList 4 false lst add Mercury lst add Venus lst add Earth lst add JavaSoft lst add Mars lst add Neptune add lst TextAreaadd newTextArea Hello 5 40 TextFieldTextFieldtf1 tf2 tf3 tf4 tf1 newTextField ablanktextfieldtf2 newTextField 20 blankfieldof20columnstf3 newTextField Hello predefinedtextdisplayedtf4 newTextField Hello 30 predefinedtextin30columns 21 20 第22頁 菜單菜單與其他組件不同 無法直接添加到容器的某一位置 也無法用布局管理器對其加以控制 它由以下概念支撐 菜單條 MenuBar 只能添加到Frame中 用setMenuBar 作為擺放菜單的容器 菜單 Menu 菜單項容器 負責顯示并控制其中的菜單項 它支持菜單嵌套 菜單項 MenuItem 真正的動作 可以用ActionListener監(jiān)聽其事件 ActionEvent 復選框菜單項 CheckboxMenuItem 真正的動作 可以用ItemListener監(jiān)聽其事件 ItemEvent 彈出式菜單 PopupMenu 與菜單 Menu 相似 也是菜單項容器 通過其show 方法來顯示菜單項 二 AWT中的常用組件及用法 21 20 第23頁 MenuBarmb Menum MenuItemmi1 mi2 CheckboxMenuItemmi3 Buildthemenubar mb newMenuBar setMenuBar mb Buildfirstmenuinthemenubar m newMenu Menu1 mb add m mi1 newMenuItem File m add mi1 mi2 newMenuItem Edit m add mi2 mi3 newCheckboxMenuItem Exit m add mi3 二 AWT中的常用組件及用法 21 20 第24頁 三 Java外觀布局的管理與控制 21 20 第25頁 在程序中安排組件的位置和大小時 應注意 容器中布局管理器負責各組件的大小和位置 用戶無法在這種情況下設置組件的這些屬性 如試圖調(diào)用setLocation setSize setBounds 等 如果用戶確實需要自己設置組件的大小和位置 則應取消該容器的布局管理器 方法為 setLayout null 但用戶必須使用setLocation setSize setBounds 等方法為組件設置大小和位置 不過程序?qū)⑾到y(tǒng)相關(guān) 三 Java外觀布局的管理與控制 21 20 第26頁 在容器中所有組件的布局都由布局管理器來控制 每個容器 如Panel Windows或Frame都有各自缺省的布局管理器 程序員也可以在程序中指定一個新的布局管理器 java awt類包中包含五種布局管理器 FlowLayout Panel和Applet的缺省布局管理器BorderLayout Window Dialog和Frame的缺省布局管理器GridLayoutCardLayoutGridBagLayout 三 Java外觀布局的管理與控制 21 20 第27頁 三 Java外觀布局的管理與控制 1 FlowLayout FlowLayout布局方式是將組件一排一排地依次放置 它自動調(diào)用組件的getPreferredSize 方法 使用組件的最佳尺寸來顯示組件 當容器被重新設置大小后 則布局也會隨之發(fā)生改變 各組件的大小不變 但相對位置會發(fā)生變化 FlowLayout類有三種構(gòu)造方法 publicFlowLayout 使用缺省居中對齊方式 組件間的水平和豎直間距為缺省值5個象素 publicFlowLayout intalignment 使用指定的對齊方式 FlowLayout LEFT FlowLayout Center FlowLayout RIGHT 0 1 2 水平和豎直間距為缺省值5象素 publicFlowLayout intalignment inthGap intvGap 使用指定的對齊方式 水平和豎直間距也為指定值 21 20 第28頁 GridLayout布局方式可以使容器中的各組件呈網(wǎng)格狀分布 容器中各組件的高度和寬度相同 當容器的尺寸發(fā)生變化時 各組件的相對位置不變 但各自的尺寸會發(fā)生變化 各組件的排列方式為 從上到下 從左到右 與BorderLayout類相類似 如果想在一個網(wǎng)格單元中添加多個組件 則必須先在該網(wǎng)格單元放一個容器 再將多個組件放在該容器中 三 Java外觀布局的管理與控制 2 GridLayout 21 20 第29頁 GridLayout類有三種構(gòu)造方法 publicGridLayout 在一行中放置所有的組件 各組件間的水平間距為0象素 publicGridLayout introws intcols 生成一個rows行 cols列的管理器 最多能放置rows cols個組件 publicGridLayout introws intcols inthGap intvGap 各組件間的水平和豎直間距為指定值 三 Java外觀布局的管理與控制 2 GridLayout 21 20 第30頁 BorderLayout布局方式提供了更復雜的布局控制方法 它包括5個區(qū)域 North South East West和Center 其方位依據(jù)上北下南左西右東 當容器的尺寸發(fā)生變化時 各組件的相對位置不變 但中間部分組件的尺寸會發(fā)生變化 南北組件的高度不變 東西組件的寬度不變 BorderLayout類有二種構(gòu)造方法 publicBorderLayout 各組件間的水平和豎直間距為缺省值0個象素 publicBorderLayout inthGap intvGap 各組件間的水平和豎直間距為指定值 三 Java外觀布局的管理與控制 3 BorderLayout 21 20 第31頁 如果容器使用了BorderLayout布局方式 則用add 方法往容器中添加組件時必須指明添加的位置 否則組件將無法正確顯示 不同的布局管理器 向容器中添加組件的方法也不同 add West newButton West add North newButton North add newButton South BorderLayout SOUTH 若沒有指明放置位置 則表明為默認的 Center 方位 三 Java外觀布局的管理與控制 3 BorderLayout 21 20 第32頁 每個區(qū)域只能添加一個組件 若添加多個 則只能顯示一個 如果想在一個區(qū)域添加多個組件 則必須先在該區(qū)域放一個容器 再將多個組件放在該容器中 若每個區(qū)域或若干個區(qū)域沒有放置組件 東西南北區(qū)域?qū)⒉粫蓄A留 而中間區(qū)域?qū)⒅每?三 Java外觀布局的管理與控制 3 BorderLayout 21 20 第33頁 四 Java事件與事件處理 所謂事件 就是發(fā)生在用戶界面上的用戶交互行為而產(chǎn)生的一種效果 如鼠標的各種動作 鍵盤的操作以及發(fā)生在組件上的各種動作 因此事件一般也分為三種類型 鍵盤事件 鼠標事件以及組件的動作事件 對鼠標或鍵盤事件在一定程度上進行了封裝 每發(fā)生一個事件 程序都需要作出相應的響應 這稱為事件處理 在JDK1 0和1 1中 事件表示以及事件的處理是采用不同的方式來完成的 21 20 第34頁 在JDK1 1中 事件處理模型將事件源 產(chǎn)生事件的組件 和對事件作出的具體處理 利用一種稱為監(jiān)聽器 listener 的實體來對事件進行具體的處理 分開 一般情況下 組件 事件源 都不處理自己的事件 而是將事件處理委托給外部的處理實體 監(jiān)聽器 這種事件處理模型稱為事件的授權(quán)處理模型 不同的事件 可以交由不同類型的監(jiān)聽器去處理 所有的組件都從Component類中繼承了將事件處理授權(quán)給監(jiān)聽器的方法 addXXXListener ListenerTypelistener 所有的監(jiān)聽器接口都放在java awt event包中 四 Java事件與事件處理 21 20 第35頁 首先 對于某種類型的事件XXXEvent 要想接收并處理該類事件 必須定義相應的事件監(jiān)聽器類 這個類需要實現(xiàn)針對該類事件的特定接口XXXListener 其次 要實現(xiàn)該類中對事件處理的所有方法 第三 對于事件源 必須使用addXXXListener XXXListener對象 注冊該類事件的監(jiān)聽器 以便當事件產(chǎn)生時 能夠被監(jiān)聽器接收和處理 Test Exit ActionEvent Frame 事件源 監(jiān)聽器 MyListenerClass 四 Java事件與事件處理 actionPerformed ActionEvente 21 20 第36頁 publicclassMyFrameextendsFrame publicMyFrame Stringstr super str setLayout newFlowLayout setSize 300 200 Buttonb1 newButton Test Buttonb2 newButton Exit MyListenerClassbln newMyListenerClass b1 addActionListener bln b2 addActionListener bln add b1 add b2 publicstaticvoidmain Stringargs MyFramefr newMyFrame EventTest fr show classMyListenerClassimplementsActionListener publicvoidactionPerformed ActionEvente if e getActionCommand Test System out println ButtonTestpressed else System exit 0 四 Java事件與事件處理 21 20 第37頁 JDK1 1事件處理模型中的監(jiān)聽器都是通過實現(xiàn)在包java awt event中提供的監(jiān)聽器接口來獲得的 每種事件都對應有相應的監(jiān)聽器接口 事件的處理方法都已經(jīng)在該接口中定義了 interfaceKeyListenerextendsjava util EventListener publicvoidkeyPressed KeyEvente publicvoidkeyReleased KeyEvente publicvoidkeyTyped KeyEvente interfaceActionListenerextendsjava util EventListener publicvoidactionPerformed ActionEvente 監(jiān)聽器接口示例 四 Java事件與事件處理 21 20 第38頁 各AWT組件所產(chǎn)生的事件和事件所用的監(jiān)聽器 四 Java事件與事件處理 21 20 第39頁 21 20 第40頁 監(jiān)聽器注冊方法 MouseMotionListener mouseDragged MouseEvente mouseMoved MouseEvente WindowListener windowActivated WindowEvente windowClosed WindowEvente windowClosing WindowEvente windowDeactivated WindowEvente windowDeiconified WindowEvente windowIconified WindowEvente windowOpened WindowEvente 21 20 第41頁 MultiListener java 在一個監(jiān)聽器類中可以實現(xiàn)多個監(jiān)聽器接口 通過它可以同時監(jiān)聽同一個事件源上發(fā)生的多種事件 同時 通過事件可以獲得事件的詳細信息 四 Java事件與事件處理 21 20 第42頁 由于通過實現(xiàn)接口XXXListener來完成事件處理時 要同時實現(xiàn)該接口中的所有方法 通常我們只是需要對其中的某些方法做處理 而不想實現(xiàn)所有的無關(guān)方法 因此 為了方便起見 JDK1 1為某些監(jiān)聽器接口提供了適配器類 XXXAdapter 當需要對某種事件進行處理時 只需讓事件處理類繼承事件所對應的適配器類 只重寫需要關(guān)注的方法即可 而無關(guān)的方法就不必實現(xiàn)了 適配器是一個類而不是接口 因而處理事件的類只能繼承一個適配器 當該類需要處理多種事件時 通過繼承適配器類的方式是不行的 但可以基于適配器類 用內(nèi)嵌類 InnerClass 的方法來處理這種情況 MultiListener1 java 四 Java事件與事件處理 21 20 第43頁 Applet本身是一個AWT組件 因此可以對其中所發(fā)生的事件進行處理 其處理與前面所講的圖形用戶界面程序的設計是一樣的 四 Java事件與事件處理 21 20 第44頁 五 Java小應用程序的分析 1 Applet簡介Java小應用程序 JavaApplet 是使用Java語言編寫的一段代碼 它能夠在瀏覽器環(huán)境中運行 Applet與Application地主要區(qū)別在于它們的執(zhí)行方式不同 Application是使用命令行命令直接運行 從其main 方法開始運行的 而Applet則是在瀏覽器中運行的 首先必須創(chuàng)建一個HTML文件 通過編寫HTML語言代碼告訴瀏覽器載入何種Applet以及如何運行 再在瀏覽器中給出該HTML文件的URL地址即可 Applet本身的執(zhí)行過程也較Application復雜 21 20 第45頁 回憶一下小應用程序的書寫格式importjava applet publicclassMyAppletextendsApplet 每一個小應用程序都繼承自java applet Applet類 并且每個小應用都有一個主程序類 之前必須加上public 五 Java小應用程序的分析 21 20 第46頁 2 Applet的執(zhí)行過程 21 20 第47頁 3 Applet的安全性 沙箱 機制 Java虛擬機為Applet提供能夠良好運行的沙箱 一旦它們試圖離開沙箱則會被禁止 由于小應用程序是通過網(wǎng)絡傳遞的 這就不可避免地使人想到會發(fā)生安全問題 例如有人編寫惡意程序通過小應用程序讀取用戶密碼并散播到網(wǎng)絡上 這將會是一件非??膳碌氖虑?所以 必須對小應用程序進行限制 瀏覽器禁止Applet執(zhí)行下列操作 1 在運行時調(diào)用其它程序 2 文件讀寫操作 3 裝載動態(tài)連接庫和調(diào)用任何本地方法 4 試圖打開一個socket進行網(wǎng)絡通信 但是所連接的主機并不是提供Applet的主機 五 Java小應用程序的分析 21 20 第48頁 小應用程序的限制 五 Java小應用程序的分析 21 20 第49頁 看看我們以前學過的一個簡單例子 importjava applet importjava awt publicclassHelloAppletextendsApplet publicStrings publicvoidinit s newString HelloWorld publicvoidpaint Graphicsg g drawString s 25 25 HelloApplet java 五 Java小應用程序的分析 4 Applet的運行控制 21 20 第50頁 Applet的運行控制 五 Java小應用程序的分析 21 20 第51頁 Applet的生命周期 五 Java小應用程序的分析 21 20 第52頁 Applet中沒有main 方法 當Applet被瀏覽器運行時 init start stop destroy 方法等自動執(zhí)行 init 方法 初始化 自動調(diào)用 只執(zhí)行一次 本方法主要完成一些在Applet構(gòu)造方法所不能完成的工作 start 方法 初始化后 重入等都將自動調(diào)用 本方法是Applet的主體 在其中可以執(zhí)行一些任務或啟動相關(guān)的線程來執(zhí)行任務 stop 方法 離開Applet所在頁面時調(diào)用 以停止消耗系統(tǒng)資源 destroy 方法 瀏覽器關(guān)閉時自動調(diào)用 以清除Applet所用的所有資源 五 Java小應用程序的分析 21 20 第53頁 五 Java小應用程序的分析 21 20 第54頁 Applet是從java awt Panel繼承而來 因此它本身也是一個容器 可以往其中添加其他的AWT組件 從而構(gòu)造更復雜 更有用的Applet程序 往Applet中添加其他AWT組件及其事件處理與前面所講的圖形用戶界面程序的設計是一樣的 五 Java小應用程序的分析 21 20 第55頁 實驗 組件的應用實例 制作如下一個留言板的界面 按要求加入所需控件 并進行窗口控件的布局 之后 按要求為按鈕 文本框 窗口添加事件 使之實現(xiàn)提交顯示留言 清屏 留言至頂和至尾等功能 21 20 第56頁 640 480 大笑痛苦 微笑- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- javajava 圖形 用戶界面 事件 處理
鏈接地址:http://www.hcyjhs8.com/p-6358446.html