java8圖形用戶界面設(shè)計(jì)概述.ppt
《java8圖形用戶界面設(shè)計(jì)概述.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《java8圖形用戶界面設(shè)計(jì)概述.ppt(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1 第8章圖形用戶界面設(shè)計(jì)概述 現(xiàn)代的應(yīng)用程序早已進(jìn)入圖形時(shí)代 命令行程序只在特殊的時(shí)候才會(huì)使用 Java提供了豐富的類用來(lái)生成圖形用戶接口 GraphicalUserInterface GUI 本章將講述JavaGUI的發(fā)展 AWT的構(gòu)成 布局管理器的應(yīng)用及Java的事件處理模型 2 8 1AWT概述 Java1 0包含一個(gè)用于GUI編程的類庫(kù) 叫抽象窗口工具箱 AbstractWindowToolkit AWT Java awt包中最核心的類是Component類 是構(gòu)成Java圖形用戶界面的基礎(chǔ) 所有其他組件都是從Component類派生出來(lái)的 注意 Component類是一個(gè)抽象類 不能直接使用 在Componen類中定義了AWT組件具有的一般功能如大小和位置控制 外形控制 組件的狀態(tài)控制等 3 大小和位置控制一個(gè)組件的大小和位置可以通過(guò)組件提供的一些方法來(lái)指定 相應(yīng)的方法包括setSize setLocation 等 外形控制可以通過(guò)getFont setFont setForeground 等方法設(shè)置組件中的字體 顏色等 基本繪畫(huà)支持方法repaint paint update 用于在屏幕上繪制組件 AWT繪圖系統(tǒng)通過(guò)一個(gè)單獨(dú)的線程控制程序何時(shí)進(jìn)行組件的繪制 組件的狀態(tài)控制提供的有關(guān)組件狀態(tài)控制方面的方法有 setEnable isEnable isVisible 等 從Component類派生出來(lái)的Container類用于表示GUI中的容器 該類具有的功能是組件管理和布局管理 在組件管理中 包含的方法有add remove getComponent 等 分別用于添加組件 刪除組件和獲得某個(gè)組件 4 8 2AWT基本組件 為了方便大家進(jìn)行圖形用戶界面設(shè)計(jì) 本節(jié)介紹AWT基本組件 實(shí)際上一個(gè)圖形用戶界面就是由一些AWT基本組件組成的 按鈕 Button 按鈕是AWT中最常見(jiàn)的一種組件 用戶可以通過(guò)單擊操作 如果希望按鈕響應(yīng)用戶的單擊操作 就需要實(shí)現(xiàn)相關(guān)的鼠標(biāo)單擊事件 8 5節(jié) 按鈕組件的生成方式如下 Buttonbutobj newButton OK 上面的語(yǔ)句生成了一個(gè)標(biāo)記文字為OK的按鈕 5 復(fù)選框 Checkbox 單選框 RadioButton 復(fù)選框和單選框組件都提供簡(jiǎn)單的 on off 開(kāi)關(guān) 單選框之間同一時(shí)刻只能有一個(gè)被選中 一組復(fù)選框之間沒(méi)有特定的約束關(guān)系 可以有任意個(gè)復(fù)選框被同時(shí)選中 6 復(fù)選框?qū)ο蟮纳煞椒?checkboxchbobj newcheckbox one null true 第一個(gè)參數(shù)是復(fù)選框的文本標(biāo)簽 第二個(gè)參數(shù)為復(fù)選框的組名 組名為空 表示生成的對(duì)象是復(fù)選框第三個(gè)參數(shù)代表復(fù)選框?qū)ο蟮臓顟B(tài) ture表示生成的復(fù)選框?qū)ο鬄檫x中狀態(tài) false表示非選中狀態(tài) 7 CheckboxGroupcbgobj newCheckboxGroup Checkboxc1 newCheckbox one cbgobj true Checkboxc2 newCheckbox two cbgobj false 文本標(biāo)簽 顯示在對(duì)象上復(fù)選框組 組名不為空 表示生成的對(duì)象是單選框復(fù)選框?qū)ο鬆顟B(tài) ture表示生成的復(fù)選框?qū)ο鬄檫x中狀態(tài) false表示非選中狀態(tài) 單選框?qū)ο蟮纳煞椒?生成復(fù)選框組對(duì)象 生成復(fù)選框?qū)ο?格式 Checkboxname newCheckbox 文本標(biāo)簽 復(fù)選框組 復(fù)選框?qū)ο鬆顟B(tài) 8 下拉式菜單 Choice 下拉式菜單適用于有大量選項(xiàng)同時(shí)又需要節(jié)省窗口面積的情況 每次只能選擇下拉式菜單中的一項(xiàng) 下拉式菜單對(duì)象的生成方式如下 choicechoiObj newChoice choiObj add class1 choiObj add class2 choiObj add class3 以上生成了包含有class1 class2和class3的下拉式菜單 標(biāo)簽 Lable 標(biāo)簽可以說(shuō)是最簡(jiǎn)單的一種組件 用于在界面上顯示一行文字 生成方式如下 LabellabObj newLabel Bookname 上面的語(yǔ)句生成了一個(gè)標(biāo)記文字為Bookname的標(biāo)簽 9 單行文本輸入?yún)^(qū) TextField 的幾種生成方法 生成一個(gè)空的單行文本輸入?yún)^(qū)TextFieldtfObj1 newTextField 生成一個(gè)列數(shù)為5的單行文本輸入?yún)^(qū) TextFieldtfObj2 newTextField 5 生成一個(gè)文本內(nèi)容為name的單行文本輸入?yún)^(qū)TextFieldtfObj3 newTextField name 生成一個(gè)文本內(nèi)容為name且列數(shù)為5的單行文本輸入?yún)^(qū)TextFieldtfObj4 newTextField name 5 注意 TextField只能顯示一行 10 文本輸入?yún)^(qū) TextArea TextArea用于顯示多行多列的文本信息 生成方式如下 TextAreataObj newTextArea Hi 3 20 在上面的語(yǔ)句中 第一個(gè)參數(shù)表示初始字符 第二個(gè)和第三個(gè)參數(shù)分別表示行數(shù)和列數(shù) 列數(shù) List 列表用于將多個(gè)文本選項(xiàng)顯示在一個(gè)區(qū)域中 用戶可以同時(shí)查看若干個(gè)選項(xiàng) ListLobj newList 2 false 顯示行數(shù) 是否允許多選 Lobj add Sun 在list中添加選項(xiàng)SunLobj add Moon 在list中添加選項(xiàng)Moon 11 滾動(dòng)窗口 ScrollPane 是一種容器 不能單獨(dú)使用 可以將其他組件添加到滾動(dòng)窗口中 ScrollpanespObj newScrollpane 生成滾動(dòng)窗口spObj add pObj 在滾動(dòng)窗口中加入對(duì)象pObj 菜單 Menu 菜單和其他組件不同 不能直接添加到容器中某一位置 可以添加到菜單條或其他菜單中 菜單條 MenuBar 是一種水平菜單 只能添加到Frame對(duì)象中 作為菜單樹(shù)的根基 下面是菜單條對(duì)象生成和添加到Frame對(duì)象中的示例語(yǔ)句 FramefrObj newFrame Frametitle MenuBarmbObj newMewMenuBar frObj setMenuBar mbObj 12 在Java中 類Mune提供了標(biāo)準(zhǔn)的下拉菜單 生成的菜單對(duì)象可以被添加到菜單條和其他菜單中 FramefrObj newFrame Frametitle MenuBarmbObj newMenuBar frObj setMenuBar mbObj MenumbObj1 newMenu File MenumbObj2 newMenu Edit mbObj add mbobj1 mbObj add mbobj2 一個(gè)菜單通常包含多個(gè)菜單項(xiàng) 菜單項(xiàng)對(duì)象生成后 通常需要添加到相應(yīng)的菜單中 如下示 Memumobj newMenu File MenuItemmiobj1 newMenuItem Open MenuItemmiobj2 newMenuItem Save mobj add miobj1 mobj add miobj2 13 8 3AWT容器 容器 Container 是Component的子類因此容器本身也是一個(gè)組件 它具有組件的所有性質(zhì) 而且還具有容納其他組件和容器的功能 本節(jié)將介紹Java中最常用的兩種容器 Frame和Panel 其他容器請(qǐng)參閱java的相關(guān)文檔 14 8 3 1FrameFrame類是Window類的子類它也是一種窗口 具有標(biāo)題屬性 可以按照常用窗口一樣調(diào)整大小 可以將組件和面板添加到其中 Java lang Object java awt Component java awt Container java awt Window java awt Frame圖8 1Frame類的繼承關(guān)系層次圖 15 Frame對(duì)象的生成 可以通過(guò)Frame類的構(gòu)造方法Frame StringstrObj 生成Frame對(duì)象 Frame的標(biāo)題由String類型的參數(shù)StrObj指定 注意 這種方法生成的Frame對(duì)象默認(rèn)情況下是不可見(jiàn)的 初始大小為 0 0 可以通過(guò)setVisible和setSize方法設(shè)置Frame的可見(jiàn)性和大小 下面的語(yǔ)句生成一個(gè)標(biāo)題為 FrameExample 大小為260 160的可見(jiàn)Frame FramefrObj newFrame FrameExample FrObj setSize 260 160 fr setVisible true 16 8 3 2Panel Panel和Frame一樣 都是容器 也可以將組件和其他面板添加到Panel中 與Frame不同的是 Panel對(duì)象必須被放入Window和Frame中才能可見(jiàn) 通常是使用add 方法將Panel添加到Window和Frame中 Java lang Object java awt Component java awt Container java awt Panel圖8 2Panel類的繼承關(guān)系層次圖 17 下面的語(yǔ)句將生成的Panel對(duì)象添加到Frame中 為了將兩者區(qū)分開(kāi) Panel對(duì)象的背景設(shè)置為紅色 FramefrObj newFrame FrameExample PanelpPbj newPanel pPbj setSize 100 80 pPbj setBackground Color red frobj setSize 260 160 frObj add pObj frObj setVisible ture 18 8 4布局管理器 布局管理器 layoutmanager 是用來(lái)安排容器中多個(gè)組件的位置及大小 以確保GUI中各組件能安排在適當(dāng)?shù)奈恢?Java中的布局類型包括以下幾種 FlowLayout 流式布局 BorderLayout 邊界布局 GridLayout 網(wǎng)格布局 CardLayout 卡片布局 BoxLayout 框布局 GridBagLayout 網(wǎng)格包布局 19 簡(jiǎn)單GUI程序 1 java awt包稱為抽象窗口工具集AWT AbstractWindowToolkit 是使用Java進(jìn)行GUI設(shè)計(jì)的基礎(chǔ) 2 javax swing包Swing組件存放在javax swing包中 幾乎所有AWT組件對(duì)應(yīng)有新功能更強(qiáng)的Swing組件 另外還加入了一些全新的組件 Swing組件在名稱上前面多了一個(gè)字母 J 20 簡(jiǎn)單GUI程序 設(shè)置GUI應(yīng)用程序的流程 1 引用需要的包和類 2 設(shè)置一個(gè)頂層的容器 3 根據(jù)需要為容器設(shè)置布局管理器或使用默認(rèn)布局管理器 4 將組件添加到容器內(nèi) 位置自行設(shè)計(jì) 5 為響應(yīng)事件的組件編寫(xiě)事件處理代碼 21 容器 組件 布局和觀感 1 容器和組件組件是可以用圖形化的方式顯示在屏幕上并能夠與用戶進(jìn)行交互的對(duì)象 容器是一種特殊的組件 一種能夠容納其他組件或容器的組件 2 布局管理器為了使圖形用戶界面具有良好的平臺(tái)無(wú)關(guān)性 提供了專門用來(lái)管理組件在容器中的布局的工具 3 觀感決定應(yīng)用程序的外觀 22 8 4 1FlowLayout 流布局管理器提供了一種非常簡(jiǎn)單的布局 用來(lái)將一群組件置于一行 它是JPanel的默認(rèn)布局管理器 流布局管理器會(huì)將組件安排在同一行 由左向右排列 并維持組件原本所定義的大小 當(dāng)此行已經(jīng)排滿時(shí) 他會(huì)將剩余的組件自動(dòng)排列到下一行 而各行的組件會(huì)向中間對(duì)齊也可以通過(guò)使用常量LEFT CENTER或RIGHT來(lái)改變默認(rèn)地對(duì)齊方式 23 FlowLayout常用的構(gòu)造函數(shù) FlowLayout 生成一個(gè)FlowLayout對(duì)象 FlowLayout intalign 生成一個(gè)FlowLayout對(duì)象并指定對(duì)齊方式 LEFT CENTER RIGHT 默認(rèn)為CENTER FlowLayout intalign inthgap intvgap 生成一個(gè)FlowLayout對(duì)象并指定對(duì)齊方式 同一行各組件之間的間距 默認(rèn)5像素 以及行間距 默認(rèn)5像素 FlowLayout的一些常用的方法 setAlignment intalign 制定組件對(duì)齊的方式 setHgap intgap 指定同一行各組件的距離 setVgap intgap 指定各行之間的距離 24 例8 1流布局管理器 效果 設(shè)置祖父類 window 的默認(rèn)構(gòu)造函數(shù)為window FlowLayout JFrame類的getContentPane 25 8 4 2BorderLayout 邊框布局管理器可以將組件安置在5個(gè)不同的區(qū)域 它們分為東 南 西 北 中 分別用常量EAST SOUTH WEST NORTH和CENTER表示 注意 每個(gè)區(qū)域只能放置一個(gè)組件 若將組件置于已有組件的區(qū)域 則原組件將被取代 與流布局管理器不同的是 各區(qū)域的組件并不一定會(huì)維持原來(lái)定義的大小 而是會(huì)充滿各區(qū)域所提供的空間 常用的構(gòu)造函數(shù)如下 BorderLayout 生成一個(gè)BorderLayout對(duì)象 BorderLayout inthgap intvgap 生成一個(gè)BorderLayout并指定組件間的水平和垂直間距 26 例8 2邊框布局管理器 27 28 8 4 3GridLayout 網(wǎng)格布局管理器會(huì)根據(jù)指定的行列數(shù)目將一個(gè)容器分割成幾個(gè)一樣大小的方形區(qū)域 每個(gè)區(qū)域只能放置一個(gè)組件 而每個(gè)組件會(huì)完全使用該區(qū)域所能使用的空間 常用的構(gòu)造函數(shù)如下 GridLayout 生成一個(gè)網(wǎng)格布局管理器 所有組件會(huì)排列于同一列 而組件間的間隔為零 默認(rèn)值 GridLayout introws intcols 生成具有rows行和cols列的網(wǎng)格布局管理器 GridLayout introws intcols inthgap intvgap 生成具有rows行和cols列并指定行間距為hgap 列間距為vgap的網(wǎng)格布局管理器 29 例8 3GridLayout java 30 8 4 4CardLayout 卡片布局管理器可以讓一群組件使用相同的空間 如同一疊卡片 只有最上邊的可以被看到 常用的構(gòu)造函數(shù)如下 CardLayout 生成一個(gè)卡片布局管理器 CardLayout inthgap intvgap 生成一個(gè)卡片布局管理器 并指定卡片內(nèi)組件之間的空間 其他常用的方法如下 first Containerparent 顯示容器的第一個(gè)組件 last Containerparent 顯示容器的最后一個(gè)組件 next Containerparent 顯示容器的下一個(gè)組件 previous Containerparent 顯示容器的前一個(gè)組件 show Containerparent Stringname 顯示容器中名字為name的組件 必須先指定各組件的名字 31 例8 4 提問(wèn) 為什么容器和面板要分別設(shè)定布局 容器是什么 里面包含什么 面板是什么 里面包含什么 32 33 8 4 5BoxLayout 框布局管理器也是用來(lái)將一群組件排列在一起 除了至左而右的排列方式 還提供由上而下的排列方式 和流布局不同的是 當(dāng)空間不夠時(shí) 組件不會(huì)自動(dòng)往下移 框布局的構(gòu)造函數(shù) BoxLayout Containertarget intaxis axis是用來(lái)指定組件排列的方式 X AXIS水平排列 Y AXIS垂直排列 可使用3種隱藏的組件做間隔 strut 用來(lái)在組件之間插入固定的空間 glue 用來(lái)控制一個(gè)框布局內(nèi)額外的空間 rididarea 用來(lái)生成一個(gè)固定大小的區(qū)域 34 例8 5 35 8 4 6GridBagLayout 網(wǎng)格袋布局管理器相對(duì)于其他布局管理器是非常有彈性的 相對(duì)使用上也是最復(fù)雜的 網(wǎng)格袋布局使用的基本單位為cell 一個(gè)組件可以占一個(gè)以上的cell 一個(gè)組件占有的區(qū)域稱為該組件的顯示區(qū)域 各組件的放置方式由限制決定 這些定義在GridBagConstraints對(duì)象中 36 例子8 6- 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您。
下載文檔到電腦,查找使用更方便
9.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) 鍵 詞:
- java8 圖形 用戶 界面設(shè)計(jì) 概述
鏈接地址:http://www.hcyjhs8.com/p-6358120.html