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