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