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