零點(diǎn)起飛學(xué)Java之圖形用戶界面.pptx
《零點(diǎn)起飛學(xué)Java之圖形用戶界面.pptx》由會員分享,可在線閱讀,更多相關(guān)《零點(diǎn)起飛學(xué)Java之圖形用戶界面.pptx(43頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
第10章圖形用戶界面 圖形用戶界面 GraphicalUserInterface 簡稱GUI 提供了一種更加直觀 友好的與用戶進(jìn)行交互的方式 利用Java語言進(jìn)行圖形用戶界面操作主要由java awt和javax swing兩個包來完成 其中 AWT包是圖形用戶界面處理的基本工具包 Swing包在AWT包的基礎(chǔ)上進(jìn)行了升級 擴(kuò)展 具有更加強(qiáng)大的圖形界面開發(fā)功能 10 1圖形界面基礎(chǔ)AWT AWT是抽象窗口工具箱的簡稱 包括了圖形界面編程的基本類庫 其作為Java語言GUI程序設(shè)計的核心 作用是給用戶提供基本的界面構(gòu)件 這些構(gòu)件可以用來建立圖形用戶界面的獨(dú)立平臺 從而使得用戶和機(jī)器之間更好地進(jìn)行交互 AWT包的內(nèi)容主要分為如下四部分 容器 用于放置基本組件 其本身也是一種組件 布局管理器 對容器中放置的組件進(jìn)行布局管理 事件處理 采用事件處理機(jī)制 使得用戶能夠通過圖形界面與系統(tǒng)進(jìn)行交互 基本組件 包括按鈕 標(biāo)簽 文本域等 是圖形界面的基本組成元素 10 1圖形界面基礎(chǔ)AWT 通過綜合使用AWT包的這些內(nèi)容 即可構(gòu)建出與用戶能夠友好交互的各種圖形界面 這幾部分內(nèi)容在AWT包中都是以類或者接口的形式體現(xiàn) 各種類或接口通過面向?qū)ο蟮乃枷胗袡C(jī)組織在一起 構(gòu)成了一個層次結(jié)構(gòu)的包 在AWT包的層次結(jié)構(gòu)中 event對應(yīng)著事件處理的相關(guān)內(nèi)容 Componet為組件的基類 包括基本組件 如Button Label Checkbox等 和容器Container類兩種 以Layout為結(jié)尾的FlowLayout BorderLayout等為布局管理器類 另外還有其他的一些輔助類 對于這些內(nèi)容 下面章節(jié)進(jìn)行詳細(xì)介紹 10 2界面容器 容器是用來存放其他組件的一種特殊組件 在Java語言中 所有容器類都是Container類的子類 Container類繼承了Component類 該類的兩個常用子類是Frame和Panel類 Frame和Panel類代表兩種不同類型的容器 下面分別進(jìn)行介紹 10 2 1框架窗口類Frame Frame類容器是一種帶有邊框的框架窗口 可以不依賴于其他組件獨(dú)立存在 Frame類繼承了Window類 可以帶標(biāo)題 設(shè)置大小等 Frame類中定義了許多操作容器的方法 如下所示 ImagegetIconImage 獲取此frame顯示在最小化圖標(biāo)中的圖像 RectanglegetMaximizedBounds 獲取此frame的最大化邊界 MenuBargetMenuBar 獲取此frame的菜單欄 StringgetTitle 獲得frame的標(biāo)題 booleanisResizable 指示此frame是否可由用戶調(diào)整大小 voidremove MenuComponentm 從此frame移除指定的菜單欄 voidsetIconImage Imageimage 設(shè)置此frame要顯示在最小化圖標(biāo)中的圖像 注意 Frame容器創(chuàng)建后默認(rèn)是不可見的 需要調(diào)用setVisible 方法將其設(shè)置為可見 10 2 2區(qū)域類Panel Panel類容器沒有任何邊框 而且需要存在于其他容器中 該類容器只是包含在其他容器中的一個區(qū)域 通常用來將許多組件組合在一個區(qū)域內(nèi) Panel類中定義的方法 如下所示 Panel 構(gòu)造方法 使用默認(rèn)的布局管理器創(chuàng)建新面板 Panel LayoutManagerlayout 構(gòu)造方法 創(chuàng)建具有指定布局管理器的新面板 voidaddNotify 創(chuàng)建Panel的同位體 AccessibleContextgetAccessibleContext 獲取與Panel相關(guān)的AccessibleContext 10 3布局管理器 布局管理器用于布局容器中的組件 包括設(shè)定組件的位置和尺寸大小等 每個容器被創(chuàng)建后 都會有一個默認(rèn)布局管理器 另外 可以設(shè)置指定的布局管理器對組件進(jìn)行管理 Java語言的AWT包提供了不同類別的布局管理器 包括BorderLayout FlowLayout CardLayout等 下面分別進(jìn)行介紹 10 3 1默認(rèn)管理器BorderLayout BorderLayout布局管理器將容器劃分為東 East 西 West 南 South 北 North 中 Center 五個區(qū)域 它是Frame類的默認(rèn)布局管理器 采用BorderLayout布局時 向容器中添加組件需要指定組件所在的區(qū)域 BorderLayout類的構(gòu)造方法主要有如下幾種 BorderLayout 使用默認(rèn)的居中對齊方式 水平和垂直間距為默認(rèn)值 BorderLayout intalign 使用指定對齊方式 水平和垂直間距為默認(rèn)值 BorderLayout intalign inthgap intvgap 使用指定的對齊方式 指定水平間距 垂直間距 10 3 1默認(rèn)管理器BorderLayout 除了構(gòu)造方法 BorderLayout類的其他一些常用方法如下所示 voidaddLayoutComponent Componentcomp Objectconstraints 使用指定的約束對象將指定組件添加到布局中 voidaddLayoutComponent Stringname Componentcomp 已過時 由addLayout Component Component Object 取代 ObjectgetConstraints Componentcomp 獲得指定組件的約束 intgetHgap 返回組件之間的水平間距 floatgetLayoutAlignmentX Containerparent 返回沿x軸的對齊方式 floatgetLayoutAlignmentY Containerparent 返回沿y軸的對齊方式 ComponentgetLayoutComponent Containertarget Objectconstraints 基于目標(biāo)Container的組件方向 獲得給定約束位置所對應(yīng)的組件 ComponentgetLayoutComponent Objectconstraints 獲得使用給定約束添加的組件 10 3 1默認(rèn)管理器BorderLayout intgetVgap 返回組件之間的垂直間距 voidinvalidateLayout Containertarget 該方法可使布局無效 指示布局管理器是否具有它應(yīng)該丟棄的緩存信息 voidlayoutContainer Containertarget 使用此邊界布局對容器參數(shù)進(jìn)行布局 DimensionmaximumLayoutSize Containertarget 在給出指定目標(biāo)容器中的組件的前提下 返回此布局的最大尺寸 DimensionminimumLayoutSize Containertarget 使用此布局管理器確定target容器的最小大小 DimensionpreferredLayoutSize Containertarget 基于容器中的組件 使用此布局管理器確定target容器的首選大小 voidremoveLayoutComponent Componentcomp 從此邊界布局中移除指定組件 voidsetHgap inthgap 設(shè)置組件之間的水平間距 voidsetVgap intvgap 設(shè)置組件之間的垂直間距 StringtoString 返回此邊界布局的狀態(tài)的字符串表示形式 說明 每個區(qū)域只能顯示一個組件 如果在一個區(qū)域添加了多個組件 則只有最后添加的那個組件是可見的 10 3 2流布局管理器FlowLayout FlowLayout布局管理器用于將組件按照從左到右 從上到下的順序進(jìn)行布局 它是Panel類的默認(rèn)布局管理器 采用FlowLayout布局 不會改變組件的大小 按組件原有尺寸顯示 當(dāng)一個組件在本行放不下時 將自動換到下一行 FlowLayout布局管理器組件之間默認(rèn)的間距是5個像素 默認(rèn)對齊方式是居中 當(dāng)然 可以調(diào)用相關(guān)方法設(shè)置不同的組件間距 行距以及對齊方式 FlowLayout類的構(gòu)造方法主要有如下幾種 FlowLayout 使用默認(rèn)的居中對齊方式 水平和垂直間距為默認(rèn)值 FlowLayout intalign 使用指定對齊方式 水平和垂直間距為默認(rèn)值 FlowLayout intalign inthgap intvgap 使用指定的對齊方式 指定水平間距 垂直間距 10 3 2流布局管理器FlowLayout 除了構(gòu)造方法 FlowLayout類的其他一些常用方法如下所示 voidaddLayoutComponent Stringname Componentcomp 將指定的組件添加到布局中 intgetAlignment 獲得此布局的對齊方式 intgetHgap 獲得組件之間以及組件與Container的邊之間的水平間隙 intgetVgap 獲得組件之間以及組件與Container的邊之間的垂直間隙 voidlayoutContainer Containertarget 布置該容器 DimensionminimumLayoutSize Containertarget 返回需要布置visible組件的最小維數(shù) 該組件包含在指定的目標(biāo)容器中 DimensionpreferredLayoutSize Containertarget 給出指定目標(biāo)容器中的visible組件 返回此布局的首選維數(shù) voidremoveLayoutComponent Componentcomp 從布局中移除指定的組件 voidsetVgap intvgap 設(shè)置組件之間以及組件與Container的邊之間的水平間隙 StringtoString 返回此FlowLayout對象及其值的字符串表示形式 10 3 3卡片布局管理器CardLayout CardLayout布局管理器用于將組件以卡片的形式進(jìn)行布局 采用CardLayout布局 每張卡片屬于不同的層次 并且充滿整個容器 當(dāng)往容器中添加組件時 需指定所在卡片的名字 CardLayout類的構(gòu)造方法主要有如下幾種 CardLayout 無參構(gòu)造方法 CardLayout inthgap intvgap 以指定間距創(chuàng)建CardLayout布局管理器 hgap指定卡片與容器的水平間距 vgap指定卡片與容器的垂直間距 10 3 3卡片布局管理器CardLayout 除了構(gòu)造方法 CardLayout類的其他一些常用方法如下所示 voidaddLayoutComponent Componentcomp Objectconstraints 將指定的組件添加到此卡片布局的內(nèi)部名稱表 voidfirst Containerparent 翻轉(zhuǎn)到容器的第一張卡片 intgetHgap 獲得組件之間的水平間隙 floatgetLayoutAlignmentX Containerparent 返回沿x軸的對齊方式 floatgetLayoutAlignmentY Containerparent 返回沿y軸的對齊方式 voidinvalidateLayout Containertarget 使布局無效 指示如果布局管理器緩存了信息 則應(yīng)該將其丟棄 voidlast Containerparent 翻轉(zhuǎn)到容器的最后一張卡片 voidlayoutContainer Containerparent 使用此卡片布局布置指定的容器 DimensionmaximumLayoutSize Containertarget 給出指定目標(biāo)容器中的組件 返回此布局的最大維數(shù) voidshow Containerparent Stringname 翻轉(zhuǎn)到已添加到此布局 使用addLayoutComponent 的具有指定name的組件 說明 因?yàn)槿魏螘r候只有一張卡片是可見的 第一張卡片位于層次的最頂端 所以運(yùn)行結(jié)果只看到第一張卡片中的組件 10 3 4網(wǎng)格布局管理器GridLayout GridLayout布局管理器將容器劃分為由行和列組成的多個網(wǎng)格 每個網(wǎng)格放一個組件 采用GridLayout布局時 在容器中按照從左到右 從上到下的順序往網(wǎng)格中逐個添加組件 GridLayout類的構(gòu)造方法主要有如下幾種 GridLayout 無參構(gòu)造方法 GridLayout introws intcols 使用指定的行數(shù)和列數(shù) GridLayout introws intcols inthgap intvgap 使用指定的行數(shù)和列數(shù)及水平間距 垂直間距 10 3 4網(wǎng)格布局管理器GridLayout 除了構(gòu)造方法 GridLayout類的其他一些常用方法如下所示 voidaddLayoutComponent Stringname Componentcomp 將具有指定名稱的指定組件添加到布局 intgetColumns 獲取此布局中的列數(shù) intgetHgap 獲取組件之間的水平間距 intgetRows 獲取此布局中的行數(shù) intgetVgap 獲取組件之間的垂直間距 voidlayoutContainer Containerparent 使用此布局布置指定容器 DimensionpreferredLayoutSize Containerparent 使用此網(wǎng)格布局確定容器參數(shù)的首選大小 voidremoveLayoutComponent Componentcomp 從布局移除指定組件 voidsetColumns intcols 將此布局中的列數(shù)設(shè)置為指定值 StringtoString 返回此網(wǎng)格布局的值的字符串表示形式 10 3 5高級網(wǎng)格布局管理器GridBagLayout GridBagLayout布局管理器在GridLayout布局管理器的基礎(chǔ)上提供了更加復(fù)雜的功能 采用GridBagLayout布局時 一個組件可以跨越多個行列放在多個網(wǎng)格內(nèi) 另外 可以通過設(shè)定填充方式 間距等任意調(diào)整組件的大小和位置 GridBagLayout布局管理器引入了GridBagConstraints類 該類用于輔助定義有關(guān)組件布局的各種屬性 GridBagConstraints類的主要屬性有如下幾種 intanchor 指定組件在區(qū)域中放置的位置 intfill 指定組件填充方式 intgridheight 指定組件的高度 單位為網(wǎng)格個數(shù) intgridwidth 指定組件的寬度 單位為網(wǎng)格個數(shù) intgridx 指定組件的橫向坐標(biāo) 單位為網(wǎng)格個數(shù) intgridy 指定組件的縱向坐標(biāo) 單位為網(wǎng)格個數(shù) Insetsinsets 指定組件與區(qū)域的間隔大小 intipadx 指定組件間的橫向間距 intipady 指定組件間的縱向間距 10 3 5高級網(wǎng)格布局管理器GridBagLayout GridBagConstraints類的一些常用方法如下所示 voidaddLayoutComponent Componentcomp Objectconstraints 使用指定constraints對象將指定組件添加到布局中 protectedvoidadjustForGravity GridBagConstraintsconstraints Rectangler 根據(jù)約束幾何結(jié)構(gòu)和填充將x y 寬度和高度四個字段調(diào)整為正確值 protectedvoidAdjustForGravity GridBagConstraintsconstraints Rectangler 此方法已過時 僅提供向后兼容性 新代碼應(yīng)該調(diào)用adjustForGravity來代替 protectedvoidArrangeGrid Containerparent 此方法已過時 僅提供向后兼容性 新代碼應(yīng)該調(diào)用arrangeGrid來代替 GridBagConstraintsgetConstraints Componentcomp 獲得指定組件的約束 DimensionmaximumLayoutSize Containertarget 在給出指定目標(biāo)容器中的組件的前提下 返回此布局的最大維數(shù)DimensionminimumLayoutSize Containerparent 使用此網(wǎng)格包布局確定parent容器的最小大小 DimensionpreferredLayoutSize Containerparent 使用此網(wǎng)絡(luò)包布局確定parent容器的首選大小 voidremoveLayoutComponent Componentcomp 從此布局移除指定組件 10 4事件處理 事件處理是圖形界面與用戶進(jìn)行交互的重要內(nèi)容 Java語言的事件處理機(jī)制包括事件源 事件 事件處理器三個主要的概念 首先需要為事件源注冊相應(yīng)的事件處理器 事件源產(chǎn)生指定事件 事件處理器捕獲后進(jìn)行相應(yīng)事件處理 關(guān)于事件處理的具體內(nèi)容 下面進(jìn)行詳細(xì)介紹 10 4 1什么是事件處理 事件處理是圖形用戶界面中的重要部分 應(yīng)用程序生成的圖形界面應(yīng)該能夠響應(yīng)用戶的各種操作 如鼠標(biāo)單擊 鍵盤鍵按下 單擊按鈕等 程序?qū)τ脩舨僮鞯捻憫?yīng)使得系統(tǒng)能夠和用戶進(jìn)行各種交互 從而可以實(shí)現(xiàn)各種處理流程 圖形界面對用戶操作的響應(yīng)采用事件處理的機(jī)制來完成 該機(jī)制包括如下三個重要的概念 事件源 產(chǎn)生事件的各種組件 如窗口 按鈕 復(fù)選框等 事件 用戶對事件源的各種操作動作 事件處理器 用于接收并處理事件的方法 10 4 1什么是事件處理 圖形用戶界面的事件處理機(jī)制是將事件處理授權(quán)給事件處理器 從而實(shí)現(xiàn)事件源與事件處理器的分離 事件處理器專門負(fù)責(zé)事件處理 事件源對發(fā)生的事件只做發(fā)送操作 不做任何其他處理 事件源與事件處理器之間通過具體事件進(jìn)行聯(lián)系 三者之間的關(guān)系如圖10 12所示 10 4 1什么是事件處理 在Java語言中 AWT事件處理部分的內(nèi)容主要由java awt event包來完成 針對各種AWT事件 java awt event包中定義了各種相應(yīng)的事件類 所有AWT事件類都由AWTEvent類派生而來 每個事件類分別對應(yīng)不同的事件類別 其中包含了該類事件的各種相關(guān)信息 可以調(diào)用相應(yīng)的API方法進(jìn)行獲取 另外 對所有事件類一個公共的功能就是能夠獲得事件源對象 在具體的事件處理方法中 往往需要提供事件源的各種信息 通過事件類即可以獲得事件源對象 事件處理器是事件處理的核心部件 java awt event包中定義了各種事件處理的接口 這些接口通常為XxxxListener的形式 稱為事件監(jiān)聽器 對每一種事件監(jiān)聽器接口 java awt event包又定義了相應(yīng)的實(shí)現(xiàn)類 通常為XxxxAdapter的形式 稱為事件適配器 事件處理器就是實(shí)現(xiàn)了事件監(jiān)聽器接口或者繼承了事件適配器類的對象 其中的相應(yīng)方法負(fù)責(zé)處理具體的事件 10 4 2事件監(jiān)聽器 事件監(jiān)聽器是用于監(jiān)聽事件源觸發(fā)事件的對象 其中包含對事件發(fā)生后的處理操作 在Java語言中 針對不同的事件 定義了相應(yīng)的事件監(jiān)聽器接口 下面列舉一些較常用的事件監(jiān)聽器接口 ActionListener 用于接收操作事件的監(jiān)聽器接口 AdjustmentListener 用于接收調(diào)整事件的監(jiān)聽器接口 AWTEventListener 該監(jiān)聽器接口用于接收指派給對象的事件的通知 這些對象是Component MenuComponent或其子類的實(shí)例 ComponentListener 用于接收組件事件的監(jiān)聽器接口 ContainerListener 用于接收容器事件的監(jiān)聽器接口 FocusListener 用于接收組件上的鍵盤焦點(diǎn)事件的監(jiān)聽器接口 HierarchyBoundsListener 用于接收組件的移動和大小調(diào)整事件的監(jiān)聽器接口 HierarchyListener 用于接收層次結(jié)構(gòu)更改事件的監(jiān)聽器接口 InputMethodListener 接收輸入方法事件的監(jiān)聽器接口 10 4 3事件適配器 10 4 2節(jié)介紹的事件監(jiān)聽器通常都是以實(shí)現(xiàn)接口的方式進(jìn)行定義的 因?yàn)閷?shí)現(xiàn)接口就要實(shí)現(xiàn)其定義的所有方法 僅為實(shí)現(xiàn)一個事件方法而采用事件監(jiān)聽器方式所寫的代碼會顯得非常重復(fù) 在Java語言中 針對每個事件監(jiān)聽器接口 系統(tǒng)定義了相應(yīng)的實(shí)現(xiàn)類 稱為事件適配器 只要繼承事件適配器類 僅覆蓋需要的相應(yīng)方法就可以處理某個特定的事件了 這樣代碼變得更加簡潔 下面列舉幾個較常用的事件適配器類 ComponentAdapter 用于接收組件事件的抽象適配器類 FocusAdapter 用于接收鍵盤焦點(diǎn)事件的抽象適配器類 KeyAdapter 接收鍵盤事件的抽象適配器類 MouseAdapter 接收鼠標(biāo)事件的抽象適配器類 MouseMotionAdapter 接收鼠標(biāo)移動事件的抽象適配器類 WindowAdapter 接收窗口事件的抽象適配器類 10 5AWT基本組件 基本組件是構(gòu)成圖形用戶界面的基本元素 基本組件添加到容器中 由專門的布局管理器管理布局 通過事件機(jī)制來響應(yīng)用戶的操作 Java語言的AWT包提供了各種基本的圖形界面組件 包括Button Label Checkbox等 下面分別進(jìn)行介紹 10 5 1按鈕 按鈕Button是圖形界面中經(jīng)常使用的組件 用戶單擊按鈕時觸發(fā)一定的執(zhí)行動作 Button類的一些常用方法如下所示 voidaddActionListener ActionListenerl 添加指定的操作監(jiān)聽器 以接收來自此按鈕的操作事件 voidaddNotify 創(chuàng)建按鈕的同位體 AccessibleContextgetAccessibleContext 獲得與此Button相關(guān)的AccessibleContext StringgetActionCommand 返回此按鈕激發(fā)的操作事件的命令名稱 ActionListener getActionListeners 返回在此按鈕上注冊的所有操作監(jiān)聽器的一個數(shù)組 StringgetLabel 獲得此按鈕的標(biāo)簽 voidremoveActionListener ActionListenerl 移除指定的操作監(jiān)聽器 以便它不再接收來自此按鈕的操作事件 voidsetActionCommand Stringcommand 設(shè)置此按鈕激發(fā)的操作事件的命令名稱 10 5 2標(biāo)簽 標(biāo)簽Label用于在圖形界面上顯示一行只讀的文本 Label類的一些常用方法如下所示 voidaddNotify 創(chuàng)建此標(biāo)簽的同位體 AccessibleContextgetAccessibleContext 獲取與此標(biāo)簽相關(guān)的AccessibleContext intgetAlignment 獲取此標(biāo)簽的當(dāng)前對齊方式 StringgetText 獲取此標(biāo)簽的文本 protectedStringparamString 返回一個表示此Label狀態(tài)的字符串 voidsetAlignment intalignment 將此標(biāo)簽的對齊方式設(shè)置為指定的方式 voidsetText Stringtext 將此標(biāo)簽的文本設(shè)置為指定的文本 10 5 3單行文本域 上面介紹的標(biāo)簽組件顯示的文本是只讀的 用戶不能進(jìn)行編輯 單行文本域TextField組件提供了單行文本編輯的功能 TextField類的一些常用方法如下所示 voidaddActionListener ActionListenerl 添加指定的操作監(jiān)聽器 以從此文本字段接收操作事件 voidaddNotify 創(chuàng)建TextField的同位體 booleanechoCharIsSet 指示此文本字段是否有一個回送字符集 AccessibleContextgetAccessibleContext 獲取與此TextField相關(guān)的AccessibleContext ActionListener getActionListeners 返回此文本字段上已注冊的所有操作監(jiān)聽器的數(shù)組 chargetEchoChar 獲取用于回送的字符 T getListeners ClasslistenerType 返回當(dāng)前已在此TextField上注冊為FooListener的所有對象的數(shù)組 DimensiongetMinimumSize 獲取此文本字段的最小尺寸 DimensiongetMinimumSize intcolumns 獲取具有指定列數(shù)的文本字段的最小尺寸 DimensiongetPreferredSize 獲取此文本字段的首選大小 10 5 4多行文本域 單行文本域TextField雖然能夠讓用戶編輯文本 但只能在一行內(nèi)編輯 當(dāng)需要編輯多行文本時 需要使用多行文本域組件TextArea TextArea類的一些常用方法如下所示 voidaddNotify 創(chuàng)建TextArea的同位體 voidappend Stringstr 將給定文本追加到文本區(qū)的當(dāng)前文本 voidappendText Stringstr 已過時 從JDKversion1 1開始 由append String 取代 AccessibleContextgetAccessibleContext 返回與此TextArea相關(guān)的AccessibleContext intgetColumns 返回此文本區(qū)中的列數(shù) DimensiongetMinimumSize 確定此文本區(qū)的最小大小 DimensiongetPreferredSize introws intcolumns 確定具有指定行數(shù)和列數(shù)的文本區(qū)的首選大小 intgetRows 返回此文本區(qū)的行數(shù) intgetScrollbarVisibility 返回指示文本區(qū)使用何種滾動條的枚舉值 voidinsert Stringstr intpos 在此文本區(qū)的指定位置插入指定文本 voidinsertText Stringstr intpos 已過時 從JDKversion1 1開始 由insert String int 取代 10 5 5復(fù)選框和單選按鈕 Checkbox組件屬于一種選擇按鈕 用戶可以進(jìn)行相關(guān)選項(xiàng)的選擇 結(jié)合CheckboxGroup類使用 Checkbox組件可以分別實(shí)現(xiàn)復(fù)選框和單選按鈕的功能 如果不給多個Checkbox組件設(shè)置分組CheckboxGroup 則這些Checkbox組件是復(fù)選框 用戶可以同時選中多個選項(xiàng) 如果給多個Checkbox組件設(shè)置為同一個分組CheckboxGroup 則這些Checkbox組件為單選按鈕 每次只能有一個選項(xiàng)選中 Checkbox類的一些常用方法如下所示 voidaddItemListener ItemListenerl 添加指定的項(xiàng)監(jiān)聽器 以接收來自此復(fù)選框的項(xiàng)事件 voidaddNotify 創(chuàng)建Checkbox的同位體 AccessibleContextgetAccessibleContext 獲得與此Checkbox相關(guān)的Accessible Context CheckboxGroupgetCheckboxGroup 確定此復(fù)選框的組 ItemListener getItemListeners 返回已在此復(fù)選框上注冊的所有項(xiàng)監(jiān)聽器所組成的數(shù)組 booleangetState 確定此復(fù)選框是處于 開 狀態(tài) 還是處于 關(guān) 狀態(tài) protectedStringparamString 返回表示此Checkbox的狀態(tài)的字符串 protectedvoidprocessEvent AWTEvente 處理關(guān)于此復(fù)選框的事件 10 5 6列表 列表List組件用于列舉多個可供選擇的文本選項(xiàng) 包含單選和多選兩種模式 列舉的文本選項(xiàng)分為多行 只能進(jìn)行選擇 不能編輯 List類的一些常用方法如下所示 voidadd Stringitem intindex 向滾動列表中索引指示的位置添加指定的項(xiàng) voidaddActionListener ActionListenerl 添加指定的操作監(jiān)聽器以從此列表接收操作事件 voidaddItemListener ItemListenerl 添加指定的項(xiàng)監(jiān)聽器以接收此列表的項(xiàng)事件 voiddeselect intindex 取消選擇指定索引處的項(xiàng) AccessibleContextgetAccessibleContext 獲取與此List關(guān)聯(lián)的AccessibleContext ActionListener getActionListeners 返回已在此列表上注冊的所有操作監(jiān)聽器的數(shù)組 ItemListener getItemListeners 返回已在此列表上注冊的所有項(xiàng)監(jiān)聽器的數(shù)組 DimensiongetMinimumSize 確定此滾動列表的最小大小 intgetSelectedIndex 獲取列表中選中項(xiàng)的索引 StringgetSelectedItem 獲取此滾動列表中選中的項(xiàng) 10 6Swing簡介 AWT包包括了進(jìn)行圖形界面開發(fā)的各方面內(nèi)容 如容器 組件 布局管理 事件處理等 采用AWT包開發(fā)的圖形界面一個主要特點(diǎn)是依賴于具體的操作系統(tǒng) 不同的操作系統(tǒng) 顯示的圖形外觀可能不同 從JDK1 2版本以后 Java語言引入了一個新的圖形界面開發(fā)包javax swing Swing包在AWT包的基礎(chǔ)上 完全采用Java語言開發(fā) 實(shí)現(xiàn)了圖形界面的跨平臺 Swing包提供了支持跨平臺功能的更加豐富的組件庫 也稱為輕量級組件 而把AWT的組件稱為重量級組件 javax swing包中的組件類通常以字母 J 開頭 如JFrame JPanel JButton JLabel JCheckBox等 相對于AWT包 Swing包提供了更加強(qiáng)大的圖形界面開發(fā)功能 在AWT包的基礎(chǔ)上增加了許多新的組件 Swing中的大部分組件都繼承了JComponet類 Swing包中與AWT包中對應(yīng)的組件 在使用方法上基本相同 只不過 Swing包采用輕量級的方法在AWT的基礎(chǔ)上重新編寫了該組件 當(dāng)然 Swing包也增加了許多AWT沒有的組件 具有更加豐富的類庫 關(guān)于Swing界面開發(fā)知識的詳細(xì)內(nèi)容 是可以專門通過一本書來介紹的 限于篇幅 這里不再詳細(xì)闡述 具體可參考相關(guān)材料 10 7Applet AWT包中的panel類有個特殊的子類java applet Applet Applet是用Java語言編寫的小應(yīng)用程序 嵌入到Web頁面中在客戶端瀏覽器執(zhí)行 每個Applet都有其生命周期 分為初始化 運(yùn)行 停止 消亡 對于Applet的相關(guān)知識 下面進(jìn)行詳細(xì)介紹 10 7 1什么是Applet Applet是用Java語言編寫的小應(yīng)用程序的簡稱 可以直接嵌入到網(wǎng)頁中運(yùn)行 并能夠產(chǎn)生特殊的效果 在JavaApplet中 可以實(shí)現(xiàn)圖形繪制 字體和顏色控制 動畫和聲音的插入以及人機(jī)交互 網(wǎng)絡(luò)交流等功能 Applet程序的執(zhí)行方式不同于一般的Java程序 一般的Java程序執(zhí)行是從它的main 方法被調(diào)用開始的 而一個Applet通常不包含main 方法 Applet程序通常是被嵌入到HTML頁面中 由支持Java程序的Web瀏覽器執(zhí)行 開發(fā) 執(zhí)行Applet程序的主要步驟如下所示 1 編寫JavaApplet源程序 2 將Applet源程序編譯生成為字節(jié)碼文件 3 在HTML頁面文件中使用標(biāo)簽引用步驟 2 中的字節(jié)碼文件嵌入Applet 4 訪問包含Applet的HTML頁面 運(yùn)行Applet 在Java語言中 專門提供了java applet包用于支持Applet的開發(fā) 其中 java applet Applet類是所有Applet應(yīng)用的基類 所有的Java小應(yīng)用程序都必須繼承該類 該類實(shí)際上是java awt Panel的子類 所以可直接使用圖形界面AWT中的相關(guān)內(nèi)容 另外 Java語言還定義了javax swing JApplet類 該類可以使用Swing包中的相關(guān)內(nèi)容 利用AWT和Swing包 Applet就可以創(chuàng)建各種標(biāo)準(zhǔn)的圖像界面程序 10 7 1什么是Applet 在java applet Applet類中定義了很多基本的方法 用于操作Applet 其中 一些主要的方法如下所示 booleanisActive 判斷一個Applet是否處于活動狀態(tài) URLgetDocumentBase 檢索表示該Applet運(yùn)行的文件目錄的對象 URLgetCodeBase 獲取該Applet代碼的URL地址 StringgetParameter Stringname 獲取該Applet由name指定參數(shù)的值 AppletContextgetAppletContext 返回瀏覽器或小應(yīng)用程序觀察器 voidresize intwidth intheight 調(diào)整Applet運(yùn)行的窗口尺寸 voidshowStatus Stringmsg 在瀏覽器的狀態(tài)條中顯示指定的信息 ImagegetImage URLurl 按url指定的地址裝入圖像 ImagegetImage URLurl Stringname 按url指定的地址和文件名加載圖像 對于Applet中的最基本內(nèi)容 如何管理Applet的生命周期及運(yùn)行Applet 下面章節(jié)將進(jìn)行詳細(xì)介紹 10 7 2Applet生命周期 每個Applet都有其初始化 運(yùn)行 停止 消亡的過程 這些過程組成了Applet的生命周期 Applet運(yùn)行于客戶端的瀏覽器中 在生命周期的各種狀態(tài)下執(zhí)行相應(yīng)的任務(wù) 從而實(shí)現(xiàn)與用戶的交互 Applet類定義了一些與其生命周期有關(guān)的方法 在生命周期的不同階段 通過調(diào)用相應(yīng)方法可以實(shí)現(xiàn)各種有針對性的操作 對于Applet生命周期的不同階段 下面分別進(jìn)行介紹 1 初始化 初始化是Applet生命周期的開始階段 通過調(diào)用Applet類的init 方法完成 init 方法在瀏覽器第一次加載Applet時被調(diào)用 而且在Applet生命周期中只執(zhí)行一次 2 運(yùn)行 運(yùn)行是Applet在生命周期中進(jìn)行服務(wù)所做的主要工作 通過調(diào)用Applet類的start 方法完成 一個Applet的主要功能 如播放視頻 顯示動畫等都放在start 方法內(nèi) init 方法執(zhí)行完后 系統(tǒng)會自動調(diào)用start 方法 另外 當(dāng)用戶從其他頁面返回包含Applet的當(dāng)前頁面時也會執(zhí)行start 方法 start 方法可以被多次執(zhí)行 3 停止 停止要通過調(diào)用Applet類的stop 方法完成 當(dāng)用戶離開包含Applet的當(dāng)前頁面時系統(tǒng)會自動執(zhí)行stop 方法 stop 方法的主要作用是當(dāng)用戶不再關(guān)注Applet時能夠停止一些沒用的動作 stop 方法也能被多次執(zhí)行 4 消亡 消亡要通過調(diào)用Applet類的destroy 方法完成 當(dāng)瀏覽器被正常關(guān)閉時 系統(tǒng)會自動調(diào)用此方法 該方法中放置的代碼主要用來回收一些系統(tǒng)資源 10 7 3運(yùn)行Applet Applet最終在支持Java程序的客戶端瀏覽器中運(yùn)行 要在瀏覽器中調(diào)用 運(yùn)行Applet 就要將Applet嵌入到Web頁面中 在HTML頁面中嵌入Applet需要使用標(biāo)簽 標(biāo)簽的語法格式如圖10 24所示 10 7 3運(yùn)行Applet 圖中參數(shù)為標(biāo)簽的子標(biāo)簽 用于為Applet傳遞參數(shù) 包含name和value兩個屬性 另外 標(biāo)簽還可以包含其他一些屬性 主要如下所示 Name 表示Applet的名稱 Width 表示Applet區(qū)域的寬度 Height 表示Applet區(qū)域的高度 10 8小結(jié) 本章介紹了Java語言中用于圖形界面開發(fā)的AWT Swing包的相關(guān)內(nèi)容及Applet應(yīng)用程序的相關(guān)知識 重點(diǎn)介紹了用于圖形界面開發(fā)的各種容器 布局管理器 事件處理 常用組件的具體使用 本章最后給出了一個完整的實(shí)例 其中 圖形界面開發(fā)中容器 組件 事件的綜合運(yùn)用是本章的難點(diǎn) 讀者只有根據(jù)具體需求靈活使用各種組件類才能設(shè)計出更加友好的圖形界面 也需要在具體開發(fā)過程中多動手練習(xí) 從而更加深入地掌握如何進(jìn)行圖形界面開發(fā) 第11章將介紹Java語言中XML開發(fā)方面的知識- 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è)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 零點(diǎn) 起飛 Java 圖形 用戶界面
鏈接地址:http://www.hcyjhs8.com/p-5429581.html