JAVA圖形用戶(hù)界面的設(shè)計(jì)與實(shí)現(xiàn).ppt
《JAVA圖形用戶(hù)界面的設(shè)計(jì)與實(shí)現(xiàn).ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《JAVA圖形用戶(hù)界面的設(shè)計(jì)與實(shí)現(xiàn).ppt(74頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第7章圖形用戶(hù)界面的設(shè)計(jì)與實(shí)現(xiàn) 7 1圖形用戶(hù)界面 GUI 概述 界面設(shè)計(jì)的主要任務(wù) 1 創(chuàng)建組成界面的各成分和元素 指定它們的屬性和位置關(guān)系 2 定義界面事件和各元素對(duì)不同事件的響應(yīng) 實(shí)現(xiàn)界面與用戶(hù)的交互功能 生成界面的類(lèi)庫(kù) java awt abstractwindowtoolkit 抽象 操作定義在一個(gè)虛擬的窗口中進(jìn)行 實(shí)現(xiàn)跨平臺(tái) 界面的元素和成分 容器控制組件用戶(hù)自定義成分 容器 1 容器 container 組織其他界面成分和元素的單元 用來(lái)存放別的組件 有三種類(lèi)型的容器 Window Panel和ScrollPane 容器 2 Frame容器 Window是能獨(dú)立存在的容器 Frame是它的子類(lèi) Frame是有邊框容器 通常用作最外層容器 不能被其他容器包含 Frame方法 Frame Stringtitle add 在Frame中加入其他組件 pack 方法會(huì)自動(dòng)確定Frame的大小 確保Frame容器中的組件都會(huì)有與布局相適應(yīng)的合理大小 setVisible true 使Frame成為可見(jiàn) Frame被創(chuàng)建后 它是不可見(jiàn)的 例子 見(jiàn)2007 ch7 src SimpleFrame java 容器 3 Panel容器 特點(diǎn) 1 沒(méi)有邊框 不能被移動(dòng) 縮放或關(guān)閉 2 不能作為最外層圖形界面的容器 不能單獨(dú)存在只能用做容器組件加入其他容器 3 通常用于層次化界面組件管理 P260 例7 20TestPanel java例子 ch7 src MyFrame java 組件 圖形用戶(hù)界面的最小單元 用來(lái)完成與用戶(hù)的交互 用戶(hù)界面標(biāo)準(zhǔn)化的結(jié)果 例如 標(biāo)簽 文本框 按鈕 菜單等 使用組件的步驟 1 創(chuàng)建組件類(lèi)的對(duì)象 指定其屬性 2 使用某種布局策略 3 將組件對(duì)象注冊(cè)給對(duì)應(yīng)的事件監(jiān)聽(tīng)器 覆蓋事件處理方法 實(shí)現(xiàn)與用戶(hù)交互的功能 組件 用戶(hù)自定義成分 如繪制幾何圖形 使用標(biāo)志圖案等 通常只能起到裝飾 美化的作用 不能響應(yīng)用戶(hù)的動(dòng)作 不具有交互功能 用戶(hù)自定義成分 7 2繪制圖形利用Graphics類(lèi)可以繪制文字及直線(xiàn) 矩形 多邊形 圓和橢圓等各種圖形 對(duì)于Application程序 創(chuàng)建Canvas對(duì)象 并將它加入界面容器中 Applet類(lèi)和Canvas類(lèi)都有一個(gè)paint 方法 系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)Graphics類(lèi)的實(shí)例作為其參數(shù) 實(shí)現(xiàn)各種圖形繪制 Graphics類(lèi)的常用繪圖方法 例7 1 DrawFigures java p185 drawLine intx1 inty1 intx2 inty2 繪制直線(xiàn)drawRect intx inty intwidth intheight 繪制矩形fillRect intx inty intwidth intheight 填充矩形 設(shè)置字體 Font類(lèi)顯示文字 Graphics類(lèi)的drawString 方法 在屏幕的指定位置顯示字符串 Font類(lèi) 表示一種字體 包含字體類(lèi)型 字型和字號(hào) 如 Fontfnt newFont TimesRoman Font BOLD 12 Font類(lèi)有三種字體 Font PLAIN Font BOLD Font ITALIC 使用字體 Graphics類(lèi)的setFont 方法如 g setFont fnt btn setFont fnt 例7 2 AvailableFonts JavaGraphicsEnviroment類(lèi) TheGraphicsEnvironmentclassdescribesthecollectionofGraphicsDeviceobjectsandFontobjectsavailabletoaJava tm applicationonaparticularplatform 設(shè)置顏色 Color類(lèi)Color類(lèi)對(duì)象 控制文字或圖形的顏色 構(gòu)造函數(shù) publicColor intRed intGreen intBlue 各參數(shù)取值范圍 0 255publicColor floatRed floatGreen floatBlue 參數(shù)取值范圍 0 0 1 0publicColor intRGB 參數(shù)的0 7位為紅色分量 8 15位為綠色分量 16 23位為藍(lán)色分量例 ColorblueColor newColor 0 0 255 問(wèn)這是什么顏色 顏色設(shè)置 Graphics類(lèi)的setColor 方法使用自定義的顏色 ColorblueColor newColor 0 0 255 g setColor blueColor 使用Color類(lèi)的顏色常量 g setColor Color black Color類(lèi)定義了13個(gè)靜態(tài)顏色常量 包括 black 0 0 0 red 255 0 0 green 0 255 0 blue 0 0 255 等 對(duì)GUI組件 可用下列方法設(shè)置或獲取組件的背景色和前景色 publicvoidsetBackground Colorc publicColorgetBackground publicvoidsetForeground Colorc publicColorgetForeground 例7 3 UseColor Java問(wèn)題 HTML文件中的參數(shù)是以什么形式 如何傳入字節(jié)碼的 顯示圖像一 獲取圖像 Applet類(lèi)的getImage publicImagegetImage URLurl Stringname 該方法將指定圖像文件的內(nèi)容返回到Image對(duì)象 方法中的參數(shù)url是一個(gè)URL 統(tǒng)一資源定位器 地址 也就是圖像所在網(wǎng)址 name是圖像文件名 Java支持的圖像文件格式包括bmp gif jpeg等 二 繪制圖像 drawImage Imageimg intx inty ImageObserverobserver 有4個(gè)參數(shù) 圖像的Image對(duì)象 顯示圖像的左上角x y坐標(biāo) 顯示圖像的容器對(duì)象 如 g drawImage image 10 10 this 例7 4 DrawMyImage java 實(shí)現(xiàn)動(dòng)畫(huà)效果制作步驟 1 構(gòu)造或獲取動(dòng)畫(huà)的各幀 2 繪制各幀 動(dòng)畫(huà)的各幀可以用繪圖的方法繪制 也可在給定關(guān)鍵幀的情況下 采用插值方法生成 還可以用getImage 方法獲取文件中的gif或jpg格式圖像 例7 5 其中的paint 方法一次顯示一幅圖像 并調(diào)用Thread sleep 方法使程序休眠片刻 從而前一副圖像在屏幕上暫留 再顯示下一幅圖像 形成動(dòng)畫(huà) 7 3Java的標(biāo)準(zhǔn)組件與事件處理 每一個(gè)可以觸發(fā)事件的組件被當(dāng)作事件源 每一個(gè)事件都對(duì)應(yīng)專(zhuān)門(mén)的監(jiān)聽(tīng)者 監(jiān)聽(tīng)者用來(lái)接收和處理這種事件 如果一個(gè)事件源注冊(cè)了對(duì)應(yīng)的監(jiān)聽(tīng)者 那么這種事件就會(huì)被監(jiān)聽(tīng)者接收和處理 這種模式稱(chēng)為 委托模型 Java的事件處理機(jī)制 委托事件模型 事件源 可能產(chǎn)生事件的組件 注冊(cè) btn addActionListener 監(jiān)聽(tīng)者對(duì)象 ActionEvent事件 監(jiān)聽(tīng)者 負(fù)責(zé)監(jiān)聽(tīng)并處理事件的對(duì)象 實(shí)現(xiàn)接口 publicvoidactionPerformed ActionEvente 觸發(fā)事件 調(diào)用并傳遞參數(shù) 注冊(cè) 圖7 5委托事件模型 事件與監(jiān)聽(tīng)者接口 要注意以下問(wèn)題 有哪些事件源 可能發(fā)生什么事件 將事件源注冊(cè)給哪個(gè)監(jiān)聽(tīng)者 監(jiān)聽(tīng)接口包含什么方法 各代表對(duì)什么事件的處理 舉例 見(jiàn)P215表格 AWT的事件處理模型 監(jiān)聽(tīng)者對(duì)象是實(shí)現(xiàn)監(jiān)聽(tīng)者接口的類(lèi)的實(shí)例 事件源在事件發(fā)生時(shí)把事件對(duì)象發(fā)送給注冊(cè)的監(jiān)聽(tīng)者 監(jiān)聽(tīng)者對(duì)象會(huì)使用事件對(duì)象中的信息來(lái)決定如何響應(yīng)事件 注冊(cè)監(jiān)聽(tīng)者對(duì)象是通過(guò)調(diào)用事件源的 addXXXListener 來(lái)實(shí)現(xiàn)的 如下 eventSourceObject addEventListener eventListenerObject 并非每個(gè)事件類(lèi)都只對(duì)應(yīng)一個(gè)事件 例如 KeyEvent類(lèi)對(duì)應(yīng)KEY PRESSED KEY RELEASED KEY TYPED三個(gè)具體的事件 KeyEvent類(lèi)的getID 可以返回不同的常量 以此來(lái)判斷具體的事件類(lèi)型 以JButton為例 關(guān)心的事件就是按鈕被按下 想注冊(cè)該事件 就需要調(diào)用JButton的addActionListener 方法 該方法帶一個(gè)參數(shù) 實(shí)現(xiàn)ActionListener接口的對(duì)象 ActionListener接口只包含一個(gè)actionPerformed 方法 所以 將實(shí)現(xiàn)的代碼與JButton聯(lián)系起來(lái)的方法就是在類(lèi)里實(shí)現(xiàn)ActionListener接口 而且將該類(lèi)的對(duì)象用JButton的addActionListener 方法注冊(cè) 這樣actionPerformed 方法將在按鈕被按下時(shí)被回調(diào) 事件處理 用內(nèi)部類(lèi)實(shí)現(xiàn)監(jiān)聽(tīng)接口 見(jiàn)例子ButtonCounter java將容器類(lèi)實(shí)現(xiàn)監(jiān)聽(tīng)接口 見(jiàn)例子FrameCounter java定義專(zhuān)門(mén)的外部類(lèi)實(shí)現(xiàn)監(jiān)聽(tīng)接口 見(jiàn)例子OuterCounter java采用事件適配器 見(jiàn)例子AdapterCounter java 注意適配器是類(lèi) 不是接口 7 4GUI標(biāo)準(zhǔn)組件概述 Component Button 組件名 Canvas TextArea TextField List Scrollbar Label TextComponent Checkbox Choice Container Dialog Frame Window Applet Panel ScrollPane 容器 FileDialog 圖7 7AWT組件層次關(guān)系圖 Component類(lèi)的常用方法publicvoidadd PopupMenupopup 在組件上加上一個(gè)彈出菜單 publicColorgetBackground 獲得組件的背景色 publicFontgetFont 獲得組件使用的字體 publicColorgetForeground 獲得組件的前景色 publicGraphicsgetGraphics 獲得繪圖用的Graphics對(duì)象 publicvoidrepaint intx inty intwidth intheight 以指點(diǎn)的坐標(biāo)點(diǎn)為左上角 重畫(huà)組件中指點(diǎn)寬 高的區(qū)域 publicvoidsetBackgound Colorc 設(shè)置組件的背景色 publicvoidsetEnable booleanb 設(shè)置組件的使能狀態(tài) publicvoidsetFont Fontf 設(shè)置組件的字體 publicvoidsetSize intwidth intheight 設(shè)置組件大小 publicvoidsetVisible booleanb 設(shè)置組件是否可見(jiàn)的屬性 publicvoidsetForeground Colorc 設(shè)置組件的前景色 publicvoidrequestFocus 使組件獲得注意的焦點(diǎn) 標(biāo)簽 按鈕和動(dòng)作事件1 標(biāo)簽 Label 標(biāo)簽類(lèi)Label的對(duì)象用來(lái)顯示文本信息 它不是事件源 不能引發(fā)事件 常用方法是getText 和setText Strings 按鈕 Button Button類(lèi)的常用方法是getLabel 和setLabel Strings 按鈕可以引發(fā)動(dòng)作事件 如ActionEvent 為此 對(duì)應(yīng)的監(jiān)聽(tīng)者必須實(shí)現(xiàn)ActionListener接口 并實(shí)現(xiàn)相應(yīng)的actionPerFormed ActionEvente 方法 動(dòng)作事件 ActionEvent ActionEvent類(lèi)只包含一個(gè)執(zhí)行動(dòng)作事件ACTION PERFORMED 可觸發(fā)該事件的動(dòng)作包括 按鈕 點(diǎn)擊 列表中的某一選項(xiàng) 雙擊 菜單項(xiàng) 選擇 文本框 回車(chē) 5 定時(shí)器 經(jīng)過(guò)一定的時(shí)間 acertainamountoftimehaselapsed 區(qū)分不同的事件源Buttonbtn newButton 計(jì)算 btn setActionCommand 命令名 btn addActionListener this 接口的動(dòng)作響應(yīng)方法publicvoidactionPerformed ActionEvente if e getActionCommand 命令名 若無(wú)第2句 則用if e getActionCommand 計(jì)算 或者用if e getSource btn publicintgetModifiers 判斷是否還按了Ctrl Shift等功能鍵 該方法返回一個(gè)整數(shù) 可與ActionEvent類(lèi)的靜態(tài)常量ALT MASK SHIFT MASK CTRL MASK META MASK比較 用來(lái)判斷動(dòng)作事件發(fā)生時(shí) 是否同時(shí)按下某個(gè)功能鍵 目的 將一個(gè)動(dòng)作事件再細(xì)分成幾個(gè)事件 文本框 文本區(qū)域與文本事件 文本域 TextField 與文本區(qū) TextArea TextField是單行文本框 TextArea是多行文本區(qū)域 它們都是TextComponent的子類(lèi) 創(chuàng)建TextAreatxtArea newTextArea 10 45 10行25列的文本區(qū)TextFieldname newTextField 卡號(hào) 8 初始字符串為 卡號(hào) 可容納8個(gè)字符 常用方法父類(lèi)TextComponent的方法getText 獲取文本信息setText Stringtext 設(shè)置文本內(nèi)容setEditable bolleanb 指定文本是否可編輯isEditable 判斷文本是否可編輯select intstart intend 選擇指定范圍內(nèi)的文本selectAll 選定全部文本setSelectionStart intstart 和setSelectionEnd intend 設(shè)置選定文本的起 止位置getSelectionStart 和getSelectionEnd 獲得選定文本的起 止位置getSelectText 獲取選定文本的內(nèi)容 TextField類(lèi)的特殊方法 setEchoChar charc 設(shè)置回顯字符 用在不希望如實(shí)回顯的場(chǎng)合 如輸入密碼時(shí) getEchoChar 獲取屏蔽當(dāng)前文本域的回顯字符 EchoCharIsSet 判斷是否設(shè)置了屏蔽當(dāng)前文本域的回顯字符 TextArea類(lèi)的特殊方法 append Strings 在已有文本后面添加字符串sinsert Strings intindex 將字符串s插入到指定序號(hào)處 3 事件響應(yīng)TextEvent事件 該類(lèi)包含代表文本變化 如刪除或鍵入字符 的事件TEXT VALUE CHANGED 由TextField和TextArea的父類(lèi)TextComponent產(chǎn)生 要響應(yīng)這個(gè)事件 程序應(yīng)實(shí)現(xiàn)TextListener接口 并實(shí)現(xiàn)響應(yīng)該事件的方法 publicvoidtextValueChanged TextEvente 調(diào)用e getSource可以獲得引發(fā)該事件的文本域?qū)ο笠?ActionEvent事件 當(dāng)用戶(hù)在文本域按回車(chē)鍵時(shí) 可由TextField對(duì)象產(chǎn)生這一事件 單 復(fù)選按鈕 列表與選擇事件 選擇事件 ItemEvent ItemEvent類(lèi)包含的是代表選擇項(xiàng)的選中狀態(tài)發(fā)生變化的事件ITEM STATE CHANGED 引發(fā)這類(lèi)事件的動(dòng)作包括 1 改變列表類(lèi)List對(duì)象選項(xiàng)的選擇狀態(tài) 2 改變下拉列表類(lèi)Choice對(duì)象選項(xiàng)的選擇狀態(tài) 3 改變復(fù)選按鈕類(lèi)Checkbox對(duì)象的選擇狀態(tài) 4 改變檢測(cè)盒菜單項(xiàng)CheckboxMenuItem對(duì)象的選擇狀態(tài) ItemEvent類(lèi)的主要方法 publicItemSelectablegetItemSelectable 返回引發(fā)選中狀態(tài)變化事件的事件源 如選項(xiàng)或狀態(tài)變化的List Choice或Checkbox對(duì)象 publicObjectgetItem 返回引發(fā)選擇狀態(tài)變化的具體選擇項(xiàng) 指 文本 如選中的具體的item publicintgetStateChange 返回選擇狀態(tài)的具體類(lèi)型 其值包括ItemEvent SELECTED 被選中 和ItemEvent DESELECTED 不選 復(fù)選按鈕 Checkbox檢測(cè)盒 1 創(chuàng)建 可同時(shí)指明其文本說(shuō)明標(biāo)簽 Checkboxbcakg newCheckbox 背景色 2 常用方法getState 返回復(fù)選按鈕的狀態(tài) 選中 true 或未選中 false setState booleanb 設(shè)置復(fù)選按鈕的狀態(tài) 3 事件響應(yīng)將檢測(cè)盒注冊(cè)給ItemEvent事件監(jiān)聽(tīng)者ItemListener事件源 addItemListener 監(jiān)聽(tīng)者 實(shí)現(xiàn)接口方法 以響應(yīng)檢測(cè)盒狀態(tài)變化publicvoiditemStateChanged ItemEvente 在方法體中 用e getItemSelectable 方法獲取事件源對(duì)象引用 再調(diào)用e getState 方法獲取選擇狀態(tài) 例7 8 TestCheckbox java 單選按鈕組 CheckboxGroup 單選按鈕組是一組Checkbox的集合 每個(gè)Checkbox對(duì)應(yīng)一種情況 用CheckboxGroup類(lèi)的對(duì)象表示 例如 下述語(yǔ)句創(chuàng)建一個(gè)CheckboxGroup 三個(gè)Checkbox對(duì)象 并設(shè)置從屬關(guān)系 CheckboxGroupcheckboxGroup1 newCheckboxGroup Checkboxcheckbox1 newCheckbox checkbox1 setCheckboxGroup checkboxGroup1 Checkboxcheckbox2 newCheckbox checkbox2 setCheckboxGroup checkboxGroup1 Checkboxcheckbox3 newCheckbox checkbox3 setCheckboxGroup checkboxGroup1 事件響應(yīng)CheckboxGroup類(lèi)是Object類(lèi)的直接子類(lèi) 不能響應(yīng)事件 但可由組中的每個(gè)Checkbox對(duì)象響應(yīng)itemStateChanged類(lèi)的事件 下拉列表 Choice 1 創(chuàng)建包括創(chuàng)建Choice對(duì)象和添加選項(xiàng)兩步 size newChoice 創(chuàng)建下拉列表size add 10 添加選項(xiàng)size add 16 size add 20 2 常用方法getSelectedIndex 返回被選項(xiàng)的序號(hào)getSelectedItem 返回被選項(xiàng)的標(biāo)簽文本字符select intindex select Stringitem 選中指定序號(hào)或文本內(nèi)容的選項(xiàng)add Stringitem 和insert Stringitem intindex 將新選項(xiàng)item加在下拉列表的最后或指定的序號(hào)處 remove intindex 和remove Stringitem 刪除指定序號(hào)或指定標(biāo)簽文本的選項(xiàng) removeAll 刪除所有選項(xiàng) 列表 List 1 創(chuàng)建列表可以實(shí)現(xiàn) 多選多 復(fù)選 構(gòu)造函數(shù)包括 publicList publicList introws publicList introws booleanmultipleMode 其中 rows為可同時(shí)顯示的選項(xiàng) Item 個(gè)數(shù) multipleMode指明是否允許復(fù)選 缺省時(shí)不允許復(fù)選 創(chuàng)建列表時(shí) 也要同時(shí)添加選項(xiàng) ListMyList newList 5 true MyList add 北京 MyList add 上海 2 常用方法getSelectedItem 返回被選項(xiàng)目的文本 getSelectedItems 返回包含所有被選項(xiàng)目的字符串?dāng)?shù)組 getSelectedIndex 返回被選項(xiàng)目的序號(hào) getSelectedIndexs 返回由所有被選項(xiàng)目的序號(hào)組成的整型數(shù)組 select intindex 和deselect intindex 選中或不選指定序號(hào)的選項(xiàng) add Stringitem 將標(biāo)簽為item的項(xiàng)目加至列表的最后 add Stringitem intindex 將標(biāo)簽為item的項(xiàng)目加至指定序號(hào)處 remove intindex 刪除指定序號(hào)處的選項(xiàng) 3 事件響應(yīng)產(chǎn)生的事件 itemStateChanged 單擊某一選項(xiàng) actionPerformed 雙擊某一選項(xiàng) 要響應(yīng)這兩種事件 必須將列表注冊(cè)給相應(yīng)的事件監(jiān)聽(tīng)者 list1 addItemListener newApplet1 list1 itemAdapter this list1 addActionListener newApplet1 list1 actionAdapter this 并實(shí)現(xiàn)相應(yīng)的接口及方法 例7 11 TestList java 7 7設(shè)計(jì)事件處理專(zhuān)用類(lèi) 7 7 1內(nèi)部類(lèi)外部類(lèi)可以使用自己的內(nèi)部類(lèi) 比如創(chuàng)建內(nèi)部類(lèi)的對(duì)象并調(diào)用其方法 內(nèi)部類(lèi)能訪(fǎng)問(wèn)外部類(lèi)中定義的所有屬性和方法 7 7 2用內(nèi)部類(lèi)實(shí)現(xiàn)事件處理例子見(jiàn)前面 7 7 3焦點(diǎn)事件FocusEvent類(lèi)包含兩個(gè)具體事件 FOCUS GAINED FOCUS LOST FocusListener監(jiān)聽(tīng)者接口定義了兩個(gè)方法 publicvoidfocusGained FocusEvente publicvoidfocudLosted FocusEvente 組件與焦點(diǎn)有關(guān)的方法 requestFocus hasFocus 滾動(dòng)條與調(diào)整事件 調(diào)整事件 AdjustmentEvent AdjustmentEvent類(lèi)只包含一個(gè)表示GUI組件發(fā)生連續(xù)變化的事件ADJUSTMENT VALUE CANGED 當(dāng)用戶(hù)操縱滾動(dòng)條 Scrollbar 或其子類(lèi)組件 改變滑塊位置時(shí) 引發(fā)這一事件 AdjustmentEvent類(lèi)的主要方法 publicAdjustablegetAdjustable 返回引發(fā)狀態(tài)變化的事件源 publicintgetAdjustmentType 返回事件的狀態(tài)變化類(lèi)型 其值包括 TRACK 拖動(dòng)滑塊 UNIT DECREMENT 點(diǎn)擊下三角按鈕 引發(fā)最小單位下移 UNIT INCREMENT 點(diǎn)擊上三角按鈕 引發(fā)最小單位上移 publicintgetValue 返回狀態(tài)變化后滑塊對(duì)應(yīng)的當(dāng)前數(shù)值 滾動(dòng)條 Scrollbar 1 創(chuàng)建ScrollbarmySlider newScrollbar Scrollbar HORIZONTAL 50 1 0 100 其中 參數(shù)1指明滾動(dòng)條方向 Scrollbar HORIZONTAL為水平方向 Scrollbar VERTICAL為垂直方向 參數(shù)2為滑塊的初始位置 整型量 參數(shù)3為滑塊的大小 參數(shù)4 5分別為滑塊代表的最小和最大數(shù)據(jù) 2 常用方法setUnitIncrement intunit 指定單位增量 即單擊兩端的三角按鈕時(shí)的數(shù)據(jù)改變 setBlockIncrement intblk 指定塊增量 即單擊滾動(dòng)槽時(shí)的數(shù)據(jù)改變 getValue 返回當(dāng)前滑塊位置代表的整數(shù)值 例7 12 TestSlider Java 畫(huà)布與鼠標(biāo) 鍵盤(pán)事件 鼠標(biāo)事件 MouseEvent MouseEvent類(lèi)包含7個(gè)鼠標(biāo)事件 MOUSE CLICKED 鼠標(biāo)點(diǎn)擊事件MOUSE DRAGGED 鼠標(biāo)拖動(dòng)事件MOUSE ENTERED 鼠標(biāo)進(jìn)入事件MOUSE EXITED 鼠標(biāo)離開(kāi)事件MOUSE MOVED 鼠標(biāo)移動(dòng)事件MOUSE PRESSED 鼠標(biāo)按鈕按下事件MOUSE RELEASED 鼠標(biāo)按鈕松開(kāi)事件MouseEvent事件的監(jiān)聽(tīng)者M(jìn)ouseListener和MouseMoveListener中有7個(gè)方法 與上述事件對(duì)應(yīng) 系統(tǒng)會(huì)根據(jù)具體事件類(lèi)型 自動(dòng)調(diào)用相關(guān)的方法 MouseEvent類(lèi)的主要方法getX 和getY 分別返回鼠標(biāo)事件的X和Y坐標(biāo) getPoint 返回包含鼠標(biāo)事件坐標(biāo)的Point對(duì)象 getClickCount 返回鼠標(biāo)點(diǎn)擊事件的點(diǎn)擊次數(shù) 鍵盤(pán)事件 KeyEvent KeyEvent類(lèi)包含3種鍵盤(pán)事件 KEY PRESSED 按鍵被按下KEY RELEASED 按鍵被松開(kāi)KEY TYPED 按鍵被敲擊KeyEvent類(lèi)的主要方法 publicchargetKeyChar 返回與引發(fā)事件的按鍵對(duì)應(yīng)的Unicode字符 publicStringgetKeyText 返回引發(fā)事件的按鍵的文本內(nèi)容 如 F3 Home A 等 與KeyEvent事件對(duì)應(yīng)的監(jiān)聽(tīng)者接口是KeyListener 該接口的3個(gè)方法是 publicvoidkeyPressed KeyEvente publicvoidkeyReleased KeyEvente publicvoidkeyTyped KeyEvente 畫(huà)布 Canvas 用來(lái)畫(huà)圖的矩形背景組件 1 創(chuàng)建CanvasmyCanvas newCanvas myCanvas setSize 400 300 2 常用方法publicvoidpaint Grapicsg 用戶(hù)須覆蓋該方法以實(shí)現(xiàn)圖形繪制 3 產(chǎn)生事件可引發(fā)鍵盤(pán)和鼠標(biāo)事件 例7 14 TestCanvas java程序中使用了事件裁剪類(lèi)MouseAdapter和MouseMotionAdapter 使用事件裁剪類(lèi)作為父類(lèi)的目的是不用實(shí)現(xiàn)對(duì)應(yīng)監(jiān)聽(tīng)者接口包含的所有方法 因?yàn)槭录眉纛?lèi)已經(jīng)用空方法體實(shí)現(xiàn)了對(duì)應(yīng)監(jiān)聽(tīng)者的所有方法 見(jiàn)p224 publicvoidpaint Graphicsg g drawString 您在 X Y 至 endX endY 畫(huà)了一條線(xiàn) 10 20 g drawLine X Y endX endY voidthis mousePressed MouseEvente X e getX Y e getY showStatus 您在 X Y 開(kāi)始畫(huà)線(xiàn) voidthis mouseReleased MouseEvente endX e getX endY e getY showStatus 畫(huà)線(xiàn)結(jié)束 repaint 7 10布局設(shè)計(jì) 組件在容器中的位置和尺寸都是由布局管理器來(lái)決定的 取消布局管理器 setLayout null 默認(rèn)布局管理器 Window Frame和Dialog的默認(rèn)布局管理器是BorderLayout Panel和Applet的默認(rèn)布局管理器是FlowLayout 布局管理器 共5種 FlowLayout 流式邊界管理器BorderLayout 邊界邊界管理器GridLayout 網(wǎng)格布局管理器CardLayout 卡片布局管理器GridBagLayout 網(wǎng)格包布局管理器 7 10 1FlowLayout FlowLayout 組件按加入順序自左至右排列 一行排滿(mǎn) 轉(zhuǎn)下一行 特征 不限制組件的大小 允許它們有自己的最佳大小 當(dāng)容器被縮放時(shí) 組件的位置可能會(huì)變化 但組件的大小不變 例子 MyFlow java 7 10 2BorderLayout把容器空間劃分為東 西 男 北 中五個(gè)區(qū)域 加入組件時(shí) 應(yīng)指明所加區(qū)域 例7 17 TestBorderLayout java 7 10 3CardLayout可在容器中加入多個(gè)組件 但各組件相互重疊 每次只能顯示其中一個(gè) 使用CardLayout的一般步驟 1 創(chuàng)建CardLayout對(duì)象 card newCardLayout 2 用容器的setLayout 方法設(shè)置布局管理器 setLayout card 3 為組件分配一個(gè)字符串名 并加入組件 add 字符串名 組件 4 調(diào)用CardLayout的show 方法 根據(jù)字符串名顯示組件 show 容器名 字符串 或按加入順序顯示組件 如first 容器名 last 容器名 next 容器名 previouse 容器名 等 例7 18 TestCardLayout java 7 10 4GridLayout將容器空間劃分為m n的網(wǎng)格區(qū)域 并將組件加入到各網(wǎng)格中 步驟 1 創(chuàng)建GridLayout對(duì)象 指定網(wǎng)格的行數(shù)和列數(shù) 并用setLayout 為容器設(shè)置布局管理器 setLayout newGridLayout 行數(shù) 列數(shù) 2 調(diào)用add 方法依次將各組件加入容器 如希望某一網(wǎng)格為空白 可在該處加入一個(gè)空標(biāo)簽 add newLabel 例7 19 TestGridLayout java 有時(shí)需要結(jié)合幾種布局 如計(jì)算器的界面可以用BorderLayout和GridLayout結(jié)合起來(lái) 創(chuàng)建面板及復(fù)雜布局 7 14SwingGUI組件 在java awt包中 有各種組件 如Frame Panel Button TextField等 AWT組件的優(yōu)點(diǎn)是簡(jiǎn)單 穩(wěn)定 兼容于任何一個(gè)JDK版本 缺點(diǎn)是依賴(lài)本地操作系統(tǒng)的GUI 缺乏平臺(tái)的獨(dú)立性 為實(shí)現(xiàn)跨平臺(tái) 即在不同的操作系統(tǒng)中保持相同的外觀 從JDK1 2開(kāi)始引入Swing組件 位于javax swing包中 獨(dú)立于本地平臺(tái)的Swing組件稱(chēng)為輕量級(jí)組件 而依賴(lài)于本地平臺(tái)的AWT組件稱(chēng)為重量級(jí)組件 JFrame 與Frame不同點(diǎn) 不能用add 加入組件 也不能用setLayout 設(shè)置布局 每個(gè)JFrame都有一個(gè)與之關(guān)聯(lián)的contentPane 只能針對(duì)這個(gè)contentPane設(shè)置布局 以及加入組件 例 JFramejf newJFrame Hello Containercp jf getContentPane cp setLayout newGridLayout 2 1 cp add jLabel cp add jButton 例 2007 ch8 SimpleSwingDemo java 8 3 1JAppletJApplet類(lèi)是Applet類(lèi)的子類(lèi) 特點(diǎn) 1 缺省布局策略為BorderLayout 2 必須先使用getContentPane 方法獲得一個(gè)Container對(duì)象 再調(diào)用該對(duì)象的add 方法將各 J組件 加入 用法同JFrame 例8 5 TestJApplet java 8 3 2JButton創(chuàng)建圖標(biāo)按鈕Jbutton對(duì)象除了擁有文本標(biāo)簽外 還可以擁有圖標(biāo) 圖標(biāo)可以是用戶(hù)繪制的圖形 也可以是gif圖像 圖標(biāo)按鈕的創(chuàng)建方式如下 Iconicon newImageIcon bIcon gif 創(chuàng)建圖標(biāo)jbtn newJbutton J按鈕 icon 創(chuàng)建圖標(biāo)按鈕 例8 6 TestIconButton java改變按鈕圖標(biāo)Jbutton按鈕可以擁有多個(gè)圖標(biāo) 利用Jbutton類(lèi)的setPressedIcon Iconic 和setRolloverIcon Iconic 方法 可設(shè)定不同狀態(tài)下的圖標(biāo) 并可根據(jù)按鈕所處的狀態(tài)自動(dòng)變換 例8 7 TestChangedIcon java為按鈕加入提示利用Jbutton類(lèi)的setToolTipText Stringtext 方法可為按鈕加入提示 例8 8 TestTipButton java 8 3 3JSliderJSlider也是輔助用戶(hù)輸入連續(xù)變化數(shù)值的GUI組件 并具有刻度和標(biāo)注功能 例8 9 TestJSlider java8 3 4 JPasswordFieldJPassWordField類(lèi)是JTextField類(lèi)的子類(lèi) 主要用來(lái)輸入口令 例8 10 TestJPasswordField java8 3 5JTabbedPane這是一個(gè)容器 其作用類(lèi)似于CardLayout布局 例8 11 UseTabbedPane java- 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您。
下載文檔到電腦,查找使用更方便
14.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 圖形 用戶(hù)界面 設(shè)計(jì) 實(shí)現(xiàn)
鏈接地址:http://m.appdesigncorp.com/p-6359916.html