java-10圖形用戶界面.ppt
《java-10圖形用戶界面.ppt》由會員分享,可在線閱讀,更多相關(guān)《java-10圖形用戶界面.ppt(43頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
Java程序設(shè)計(jì) 第10章圖形用戶界面 10 1AWT組件 10 1 1圖形用戶界面概述圖形用戶界面 graphicaluserinterface GUI 處理圖形用戶界面的類庫主要是java awt包和javax swing包 AWT是abstractwindowtoolkit 抽象窗口工具集 的縮寫 javax swing包是JDK1 2以后版本所引入的圖形用戶界面類庫 功能更強(qiáng) 界面更富 設(shè)計(jì)和實(shí)現(xiàn)圖形用戶界面的工作主要有以下幾點(diǎn) 1 創(chuàng)建組件 Component 創(chuàng)建組成界面的各種元素 如按鈕 文本框等 2 指定布局 Layout 根據(jù)具體需要排列它們的位置關(guān)系 3 響應(yīng)事件 Event 定義圖形用戶界面的事件和各界面元素對不同事件的響應(yīng) 從而實(shí)現(xiàn)圖形用戶界面與用戶的交互功能 10 1 2AWT組件分類 Java中構(gòu)成圖形用戶界面的各種元素 稱為組件 Component 組件分為容器 Container 類和非容器類組件兩大類容器又分為頂層容器和非頂層容器兩大類 重要的組件的繼承關(guān)系 10 1 3Component的方法 Component類是所有組件和容器的抽象父類 其中定義了一些每個(gè)容器和組件都可能用到的方法 10 2布局管理 Java awt包中共定義了五種布局管理器 每個(gè)布局管理器對應(yīng)一種布局策略 分別是FlowLayoutBorderLayoutCardLayoutGridLayoutGridBagLayout FlowLayout布局管理器 FlowLayout是Panel類的默認(rèn)布局管理器FlowLayout布局對組件逐行定位 行內(nèi)從左到右 一行排滿后換行默認(rèn)對齊方式為居中對齊不改變組件的大小 按組件原有尺寸顯示組件可在構(gòu)造方法中設(shè)置不同的組件間距 行距及對齊方式 FlowLayout舉例 范例 TestFlowLayout java FlowLayout的構(gòu)造方法 newFlowLayout FlowLayout RIGHT 20 40 右對齊 組件之間水平間距20個(gè)像素 豎直間距40個(gè)像素 newFlowLayout FlowLayout LEFT 左對齊 水平和豎直間距為缺省值 5 newFlowLayout 使用缺省的居中對齊方式 水平和豎直間距為缺省值 5 BorderLayout布局管理器 BorderLayout是Frame類的默認(rèn)布局管理器BorderLayout將整個(gè)容器的布局劃分成東 西 南 北 中五個(gè)區(qū)域 組件只能被添加到指定的區(qū)域如不指定組件的加入部位 則默認(rèn)加入到Center區(qū)域每個(gè)區(qū)域只能加入一個(gè)組件 如加入多個(gè) 則先前加入的組件會被遺棄 BorderLayout布局管理器 BorderLayout型布局容器尺寸縮放原則北 南兩個(gè)區(qū)域只能在水平方向縮放 寬度可調(diào)整 東 西兩個(gè)區(qū)域只能在垂直方向縮放 高度可調(diào)整 中部可在兩個(gè)方向上縮放 North South West Eest Center BorderLayout舉例 范例 estBorderLayout java GridLayout布局管理器 GridLayout型布局管理器將布局劃分成規(guī)則的矩形網(wǎng)格 每個(gè)單元格區(qū)域大小相等 組件被添加到每個(gè)單元格中 先從左到右添滿一行后換行 再從上到下 在GridLayout構(gòu)造方法中指定分割的行數(shù)和列數(shù) newGridLayout 3 4 GridLayout舉例 范例 TestGridLayout java CardLayout布局管理器 CardLayout布局管理器能夠幫助用戶處理兩個(gè)以至更多的成員共享同一顯示空間 就好象一疊卡片摞在一起 注意 在一張卡片中只能顯示一個(gè)組件 因此可以使用容器嵌套方法顯示多個(gè)組件 addLayoutComponent first next last方法 GridBagLayout布局管理器 AWT中最靈活 最復(fù)雜的布局管理器 各組件所占空間可以不相同且靈活規(guī)定 參見參考書及API文檔 非考試內(nèi)容 很少用 實(shí)際項(xiàng)目開發(fā)做界面時(shí)可能會用到 容器的嵌套使用舉例 范例 NestedContainer java 默認(rèn)布局管理器 Component Container Window Panel Frame Dialog Applet BorderLayout FlowLayout 布局管理器總結(jié) 1 FrameFrame是一個(gè)頂級窗口 Frame的缺省布局管理器為BorderLayout PanelPanel無法單獨(dú)顯示 必須添加到某個(gè)容器中 Panel的缺省布局管理器為FlowLayout 當(dāng)把Panel作為一個(gè)組件添加到某個(gè)容器中后 該P(yáng)anel仍然可以有自己的布局管理器 因此 可以利用Panel使得BorderLayout中某個(gè)區(qū)域顯示多個(gè)組件 布局管理器總結(jié) 2 在程序中安排組件的位置和大小時(shí) 應(yīng)注意 容器中的布局管理器負(fù)責(zé)各個(gè)組件的大小和位置 因此用戶無法在這種情況下設(shè)置組件的這些屬性 如果試圖使用Java語言提供的setLocation setSize setBounds 等方法 則都會被布局管理器覆蓋 如果用戶確實(shí)需要親自設(shè)置組件大小或位置 則應(yīng)取消該容器的布局管理器 方法為 setLayout null 10 3事件處理 10 3 1事件及事件監(jiān)聽器Java中的圖形用戶界面中 對于用戶的鼠標(biāo) 鍵盤操作發(fā)生反應(yīng) 就必須進(jìn)行事件處理 這些鼠標(biāo) 鍵盤操作等統(tǒng)稱為事件 Event 對這些事件作出響應(yīng)的程序 稱為事件處理器 Eventhandler 1 事件類AWTEvent 事件類中包含有事件相關(guān)的信息 最重要的有 1 事件源 即產(chǎn)生事件的組件 可能通過getSource 來得到 2 事件的具體情況 如MouseEvent的getX getY 方法得到鼠標(biāo)的坐標(biāo) KeyEvent的getKeyChar 得到當(dāng)前的字符等 2 事件處理器WTEventListener 事件處理器 Eventhandler 是對事件進(jìn)行處理的程序 在編程時(shí)通過實(shí)現(xiàn)事件監(jiān)聽器 EventListener 來實(shí)現(xiàn)對事件的處理 事件監(jiān)聽器是一些事件的接口 這些接口是java awt AWTEventListener的子類 接口中含有相關(guān)的方法 如 MouseMotionListener是對鼠標(biāo)移動事件的處理的接口 它含有兩個(gè)重要的方法 voidmouseDragged MouseEvente 處理鼠標(biāo)拖動的方法voidmouseMoved MouseEvente 處理鼠標(biāo)移動的方法在這些方法中 都帶一個(gè)事件對象作為參數(shù) 如MouseMotionListener的兩個(gè)方法都帶MouseEvent參數(shù) 程序中可以根據(jù)這個(gè)參數(shù)可以得到有關(guān)事件的詳細(xì)信息 10 3 2事件監(jiān)聽器的注冊 注冊事件監(jiān)聽器只需要使用組件對象的addXXXXEvent方法 它可以指明該對象感興趣的事件監(jiān)聽器 即實(shí)現(xiàn)了某個(gè)AWTEventListener子接口的對象 這樣 當(dāng)事件源發(fā)生了某種類型的事件時(shí) 則觸發(fā)事先已注冊過的監(jiān)聽器中相應(yīng)的處理程序 一個(gè)對象上可注冊多個(gè)監(jiān)聽器多個(gè)對象可注冊同一個(gè)監(jiān)聽器 10 3 3事件適配器 用實(shí)現(xiàn)接口的方法 必須實(shí)現(xiàn)接口所規(guī)定的方法 如WindowListener有7個(gè)方法 即使一些方法不做任何事情 也得書寫 為簡化編程 針對一些事件監(jiān)聽器接口定義了相應(yīng)的實(shí)現(xiàn)類 事件適配器類 Adapter 在適配器類中 實(shí)現(xiàn)了相應(yīng)監(jiān)聽器接口中所有的方法 但不做任何事情 事件適配器包括如下幾種 1 ComponentAdapter 組件適配器 2 ContainerAdapter 容器適配器 3 FocusAdapter 焦點(diǎn)適配器 4 KeyAdapter 鍵盤適配器 5 MouseAdapter 鼠標(biāo)適配器 6 MouseMotionAdapter 鼠標(biāo)運(yùn)動適配器 7 WindowAdapter 窗口適配器 程序中可以繼承事件適配器類 并只重寫所需要的方法 而不用寫那些空的方法體 10 3 4內(nèi)部類及匿名類在事件處理中的應(yīng)用 在Java事件處理程序中 由于與事件相關(guān)的事件監(jiān)聽器的類經(jīng)常局限于一個(gè)類的內(nèi)部 所以經(jīng)常使用內(nèi)部類 而且定義的內(nèi)部類在事件處理中的使用就實(shí)例化一次 在其他地方不會用到該類 所以不需要類名 所以經(jīng)常使用匿名類 在類的內(nèi)部定義事件類 privateclassInnerMonitorimplementsMouseMotionListener MouseListener 使用匿名類的例子 f addMouseMotionListener newMouseMotionListener publicvoidmouseDragged MouseEvente Strings 位置 e getX e getY tf setText s publicvoidmouseMoved MouseEvente f addWindowListener newWindowAdapter publicvoidwindowClosing WindowEvente System exit 0 其中用匿名類實(shí)現(xiàn)了MouseMotionListener及繼承了WindowAdapter 同時(shí)實(shí)例化了這個(gè)匿名類的對象 10 4常用組件的使用 10 4 1標(biāo)簽 按鈕與動作事件10 4 2文本框 文本區(qū)域與文本事件10 4 3單 復(fù)選按鈕 列表與選擇事件10 4 4調(diào)整事件與滾動條10 4 5鼠標(biāo) 鍵盤事件與畫布10 4 6Frame與窗口事件10 4 7Panel與容器事件10 4 8組件事件 焦點(diǎn)事件與對話框參見相應(yīng)的例子 10 5繪圖 圖形和動畫 10 5 1繪制圖形繪制圖形和文字將要用類Graphics 它相當(dāng)于組件的繪圖環(huán)境 利用它可以進(jìn)行各種繪圖操作 獲得Graphics對象常有兩種方法一是使用組件的getGraphics 方法來在Applet及Application程序中 常用Canvas及Applet對象來進(jìn)行繪圖 它們的paint 方法也會帶一個(gè)Graphics參數(shù) 通過覆蓋paint 方法 就可以繪制各種圖形 Graphics的繪圖方法 畫三維矩形draw3DRect intx inty intwidth intheight booleanraised 畫弧drawArc intx inty intwidth intheight intstartAngle intarcAngle 畫文字drawBytes byte data intoffset intlength intx inty 畫文字drawChars char data intoffset intlength intx inty 畫直線drawLine intx1 inty1 intx2 inty2 畫橢圓drawOval intx inty intwidth intheight 畫多邊形drawPolygon int xPoints int yPoints intnPoints 畫多邊形drawPolygon Polygonp 畫折線drawPolyline int xPoints int yPoints intnPoints 畫矩形drawRect intx inty intwidth intheight 畫圓角矩形drawRoundRect intx inty intwidth intheight intarcWidth intarcHeight 畫文字drawString AttributedCharacterIteratoriterator intx inty 畫文字drawString Stringstr intx inty 畫填充三維矩形fill3DRect intx inty intwidth intheight booleanraised 畫填充弧fillArc intx inty intwidth intheight intstartAngle intarcAngle 畫填充橢圓fillOval intx inty intwidth intheight 畫填充多邊形fillPolygon int xPoints int yPoints intnPoints 畫填充多邊形fillPolygon Polygonp 畫填充矩形fillRect intx inty intwidth intheight 畫填充圓角矩形fillRoundRect intx inty intwidth intheight intarcWidth intarcHeight 幾個(gè)輔助類 除了Graphics類 Java中還定義了其他一些用來表示幾何圖形的類 對繪制用戶自定義成分也很有幫助 例如 利用Point表示一個(gè)像素點(diǎn) 利用Dimension類表示寬和高 利用Rectangle類表示一個(gè)矩形 利用Polygon類表示一個(gè)多邊形 利用Color類表示顏色等 10 5 2顯示文字 Graphics類的方法drawString 可以在屏幕的指定位置顯示一個(gè)字符串一個(gè)Font類的對象表示了一種字體顯示效果 包括字體類型 字型和字號 下面的語句用于創(chuàng)建一個(gè)Font類的對象 FontMyFont newFont TimesRoman Font BOLD 12 如果希望使用該Font對象 則可以利用Graphics類的setFont 方法 10 5 3控制顏色 Color類中定義有如下的三種構(gòu)造函數(shù) publicColor intRed intGreen intBlue publicColor floatRed floatGreen floatBlue publicColor intRGB 還可以直接使用Color類中定義好的顏色常量Color cyanred等 10 5 4顯示圖像 利用Graphics類的drawImage 方法顯示圖像 10 5 5實(shí)現(xiàn)動畫效果 動畫曾是JavaApplet最吸引人的特性之一 用Java實(shí)現(xiàn)動畫的原理與放映動畫片類似 取若干相關(guān)的圖像或圖片 順序 連續(xù)地在屏幕上先顯示 后擦除 循環(huán)往復(fù)就可以獲得動畫的效果 10 6Applet Applet 小程序 是一種很重要的Java程序 是工作在Internet的瀏覽器上的Java程序 編寫Applet小程序必須要用到j(luò)ava applet包中的Applet類 java applet Applet是java awt Panel的子類 如圖10 20所示 Applet的默認(rèn)布局是FlowLayout 10 6 1Applet的基本工作原理 編譯好的字節(jié)碼文件 class文件 保存在特定的WWW服務(wù)器上 同一個(gè)或另一個(gè)WWW服務(wù)器上保存著嵌入了該字節(jié)碼文件名的HTML文件 當(dāng)某一個(gè)瀏覽器向服務(wù)器請求下載嵌入了Applet的HTML文件時(shí) 當(dāng)瀏覽器遇到HTML文件中的特殊標(biāo)記 表明它嵌有一個(gè)Applet時(shí) 瀏覽器會根據(jù)這個(gè)Applet的名字和位置自動把字節(jié)碼從WWW服務(wù)器上下載到本地 并利用瀏覽器本身擁有的Java解釋器直接執(zhí)行該字節(jié)碼 10 6 2Applet類 Applet類的主要方法init start paint stop destroy 10 7SwingGUI組件 Swing是第二代GUI開發(fā)工具集 javax swing包被列入Java的基礎(chǔ)類庫 JFC Swing建立在AWT Java2D Accessibility等的基礎(chǔ)上與AWT相比 Swing具有更好的可移植性 Swing提供了更完整的組件 增加了許多功能 此外 Swing引入了許多新的特性和能力 10 8基于GUI的應(yīng)用程序 10 8 1使用可視化設(shè)計(jì)工具10 8 2菜單的定義與使用10 8 3菜單 工具條及對話框的應(yīng)用參見相應(yīng)的例子程序- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- java 10 圖形 用戶界面
鏈接地址:http://www.hcyjhs8.com/p-7260588.html