輕松學Java之圖形界面編程.ppt
《輕松學Java之圖形界面編程.ppt》由會員分享,可在線閱讀,更多相關《輕松學Java之圖形界面編程.ppt(62頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第16章圖形界面編程 圖形用戶界面 GraphicalUserInterface 簡稱GUI 提供了一種更加直觀 友好的與用戶進行交互的方式 利用Java語言進行圖形用戶界面操作主要由java awt和javax swing兩個包來完成 其中 AWT包是圖形用戶界面處理的基本工具包 Swing包在AWT包的基礎上進行了升級 擴展 具有更加強大的圖形界面開發(fā)功能 本章在了解AWT包功能的基礎上 重點講解Swing的功能 16 1AWT簡介 Java1 0的出現(xiàn)帶來了抽象窗口工具箱 AWT 設計目標是希望構建一個通用的GUI 使得利用它編寫的程序能夠運行在所有的平臺上 以實現(xiàn)Sun公司提出的口號 一次編寫 隨處運行 JavaAWT中包含了許多類來支持GUI設計 AWT由Java的java awt包提供 該包中有許多用來設計GUI的組件類 如按鈕 菜單 列表 文本框等組件類 同時還包含窗口 面板等容器類 AWT的具體層次結(jié)構如圖16 1所示 16 1AWT簡介 Java提供了一系列AWT軟件包 其中主要的包及包的描述如圖16 2所示 16 1AWT簡介 java awt包提供了基本的Java程序的GUI設計工具 主要包括組件 容器和布局管理器三個概念 其具體描述如圖16 3所示 16 2Swing簡介 Swing是Java基礎類庫 JavaFoundationClasses 中有關圖形界面的類庫 Swing擴展自AWT 例如JFrame擴展自Frame JButton擴展自Component等 基本上AWT中的每種控件都能在Swing中找到替代品 比如AWT中的Button對應于Swing中的JButton AWT中的TextField對應于Swing中的JTextField等 16 2Swing簡介 Swing包是JFC JavaFoundationClasses 的一部分 它由許多包組成 這些包的名稱及描述如表16 1所示 16 3容器類 窗口 JFrame 面板 JPanel 和對話框 J 是Swing中提供用來創(chuàng)建表示圖形用戶界面的類 該類的對象將被當作容器使用 所有的Swing組件都必須被添加到容器中 才能被顯示出來 16 3 1JFrame類 JFrame是一個窗口容器組件 可以被顯示在用戶桌面上 同時也是一個框架 在其中 可以添加需要的其他的Swing組件 JFrame是少數(shù)幾個不是通過繪制的方式顯示的Swing組件 JFrame類的構造方法如圖16 5所示 16 3 1JFrame類 JFrame類中還提供了一些與窗口有關的方法 其主要方法與方法描述如表16 2所示 16 3 2JDialog類 JDialog是一個用來創(chuàng)建對話框的類 是Dialog類的子類 創(chuàng)建的JDialog對象可以用來向用戶返回信息 接收用戶的輸入 實現(xiàn)與用戶的交互 JDialog與JFrame的區(qū)別在于 JDialog對象需要依賴于其他的對話框 比如Jframe 而存在 當它所依賴的對話框關閉或最小化的時候 該對話框也隨之關閉或最小化 16 3 2JDialog類 JDialog類創(chuàng)建對話框?qū)ο蟮臉嬙旆椒ㄈ鐖D16 7所示 JDialog類中的主要方法及方法描述如表16 3所示 16 3 3JPanel類 在得到了JFrame的內(nèi)容面板后我們就可以直接將其他的Swing組件放在其中 或者直接在上面描繪圖畫或文字 但是習慣上一般不會這么做 通常會將這些圖畫或文字信息描繪在名為JPanel的容器上 然后再將JPanel實例放在內(nèi)容面板上 這樣可以使得面板上的布局更合理 JPanel通常只作為純粹的容器來使用 它不能像框架 窗口或者對話框那樣獨立存在 JPanel的構造方法如圖16 9所示 16 4Swing常用基本組件 創(chuàng)建圖形用戶界面GUI 就是為了讓計算機程序更好的和用戶交互 JavaSwing提供了二十多種不同的用戶界面組件 所有的Swing組件都是從javax swing Jcomponent類中派生而來的 從而繼承了組件所特有的屬性和方法 16 4 1常用組件的共性操作 Swing類庫中的組件都繼承自javax swing JComponent 因此都具有JComponent的操作 包括設置背景色 設置前景色 設置字體以及設置是否禁用等 表16 4中是JComponent中常用的方法及方法描述 16 4 2按鈕 JButton 按鈕是用戶界面中常用的組件 用戶使用Swing按鈕可以顯示圖像 將整個按鈕設置為窗口默認圖標 來處理鼠標在按鈕上的事件 java swing包中提供了標準的按壓式按鈕 JButton 同時提供了選擇式按鈕 多選擇 JCheckBox 單選擇 JRadioButton 等 我們在這里先來講解JButton的知識 JButton的構造方法如圖16 11所示 16 4 3文本框 JTextField 與密碼輸入框 JPasswordField 文本框 JTextField 也是一種常見的組件 用于處理一行文本 中間沒有回車符 JTextField是JTextComponent的子類 密碼輸入框是JTextField的一個子類 JTextField和JPasswordField的構造函數(shù)形式和常用方法完全一樣 這里只列出JTextField的構造函數(shù) 如圖16 13所示 16 4 4文本域 JTextArea 文本域 JTextArea 也是一種常用組件 用于處理多行文本 JTextArea同JTextField一樣 都是JTextComponent的子類 因此它們的很多操作都類似 我們不再贅述 JTextArea的構造函數(shù)如圖16 15所示 16 4 5標簽 JLabel 標簽 JLabel 用來顯示一段文本 常用在JTextField或者JTextArea前面 提示用戶要填寫什么樣的信息 JLabel用于顯示文字 也可以同時顯示文字和圖標 一般不用于接收鼠標鍵盤的動作 JLabel的構造方法如圖16 17所示 16 4 6單選按鈕 JRadioButton JRadioButton用來實現(xiàn)單選按鈕組件 按鈕有選中和沒被選中兩種狀態(tài) 多個單選按鈕中 一次只能有一個按鈕處于被選中狀態(tài) JRadioButton的構造方法如圖16 19所示 16 4 7復選框 JCheckBox JCheckBox是用來實現(xiàn)JCheckBox的組件 復選框是一個可以被選定和取消選定的項 它將其狀態(tài)顯示給用戶 一次可以選中多個復選框 JCheckBox類的構造方法如圖16 21所示 16 4 8下拉列表 JComboBox 下拉列表 JComboBox 是一種常見的組件 用戶可以從下列的菜單列表中選擇所需要的數(shù)據(jù) 一個下拉列表只能選擇一個選項 JComboBox的構造方法如圖16 23所示 可以將需要在下拉列表中顯示的各項放入一個數(shù)組中 然后利用其相應的構造方法將數(shù)組元素的各項顯示出來 16 4 9列表 JList JList是用來表示列表的組件 該組件與下拉列表不同 它可以顯示多個項目的內(nèi)容 并且允許用戶從列表中選擇一個或多個對象 JList的主要構造方法如圖16 25所示 與下拉列表相同 可以將需要顯示的內(nèi)容先放入一個數(shù)組中 然后使用帶有Object類型數(shù)組為參數(shù)的的構造方法創(chuàng)建一個JList對象 將列表中各項顯示出來 16 4 10滾動條 JScrollPane JscrollPane類的對象可以創(chuàng)建一個垂直或者水平方向的滾動條 在實際使用中 它需要和某個容器相關聯(lián) 例如 表格 窗體等 JScrollPane類的構造方法如圖16 27所示 16 5Swing高級組件 16 4小節(jié)中我們介紹了Swing基本組件 但在實際應用中 對于一些比較復雜的界面 除了使用這些基本組件之外 還需要使用諸如表格 菜單 工具欄等這些組件 本節(jié)我們就來介紹Swing中的一些高級組件的創(chuàng)建和使用 包括表格 樹 菜單 以及對話框等組件 16 5 1表格 JTable 表格 JTable 是Swing新增加的組件 主要是為了將數(shù)據(jù)以表格的形式顯示 JTable是一個用來顯示和編輯二維單元表格的組件 可以通過創(chuàng)建一個二維數(shù)組對象 并將二維數(shù)組中定義并初始化的值放入到表中 Jtable創(chuàng)建表格的主要構造方法如圖16 29所示 16 5 2樹 JTree 樹是非常重要也是常用的一種數(shù)據(jù)結(jié)構 在計算機中也有著廣泛的應用 計算機中的目錄和文件的存儲結(jié)構都是樹形的 在Swing中 可以使用JTree來構建一個樹形結(jié)構模型 首先我們可以先舉一個樹形結(jié)構的例子 例如在 我的電腦 的C盤下的目錄結(jié)構 如圖16 31所示 16 5 2樹 JTree 在這個圖中我們要注意以下幾點 一顆樹中只有一個根結(jié)點 其余結(jié)點都是從該結(jié)點引出 除根結(jié)點外 其余結(jié)點要么是沒有子結(jié)點的結(jié)點要么是帶有子結(jié)點的結(jié)點 沒有子結(jié)點的結(jié)點稱為葉子結(jié)點 在圖16 31的樹結(jié)構中 計算機 是根結(jié)點 Intel 文件是一個葉子結(jié)點 NVIDIA 文件是一個帶有子結(jié)點的結(jié)點 然后我們看JTree的主要的構造方法 如圖16 32所示 16 5 3菜單 JMenu 菜單 JMenu 是標題欄下面的一行文字部分 菜單是應用程序中最常用的組件 菜單的組織方式為 一個菜單條JMenuBar包含多個菜單項 JMenuItem JMenuItem有兩個子類 分別為JRadioButtonMenuItem及JCheckBoxMenuItem用于表示單選菜單項和復選菜單項 16 5 3菜單 JMenu JMenu組件類的主要構造方法如圖16 34所示 創(chuàng)建菜單項的JMenuItem的主要構造方法如圖16 35所示 16 5 4工具欄 JToolBar 工具欄 JToolBar 提供了一種可以快速訪問界面中常用命令的方式 通常工具欄應該放到邊界布局中的一邊 可以水平和垂直放置 也可以拖動工具欄將其放置在想要放置的位置 工具欄一般放到菜單欄的下面 可以把菜單欄中的常用命令放到工具欄中 以方便用戶操作 16 5 4工具欄 JToolBar Java中可以通過創(chuàng)建JToolBar對象來實現(xiàn)工具欄 JToolBar的主要構造方法如圖16 37所示 orientation參數(shù)可以是以下兩個值中的任何一個 SwingConstants HORIZONTAL表示工具欄以水平方向放置 SwingConstants VERTICAL表示工具欄以垂直方向放置 16 5 5進程條 JprogressBar 進程條 JprogressBar 是以圖形化的方式來描述任務進度的組件 在任務完成過程中 進度條顯示該任務完成的百分比 百分比通常用可視化的矩形表示 該矩形開始為空 隨著任務的執(zhí)行 組件被填滿 JprogressBar的主要構造方法如圖16 39所示 16 5 6對話框 JDialog 對話框是一種大小不能變化 不能有菜單的容器窗口 對話框不能作為一個應用程序的主框架 而必須包含在其他的容器中 Java語言提供多種對話框類來支持多種形式的對話框 我們這里只為大家介紹一下簡單的標準對話框 JOptionPane 16 5 6對話框 JDialog JOptionPane提供的對話框是模式對話框 使用JOptionPane 可以創(chuàng)建和自定義問多種類型的對話框 JOptionPane類的構造方法如圖16 41所示 16 6布局管理器 在Java語言中 把創(chuàng)建的組件放置到對話框中 需要設置對話框界面的格式 這時候就必須使用布局管理器 layoutmanager 來排列界面上的組件 當組件被加入到容器中時 將如何排列 都由布局管理器來進行管理 Java中的布局管理器包括 FlowLayout GridLayout BorderLayout CardLayout和GridBagLayout 當創(chuàng)建好需要的布局管理器后 就可以調(diào)用容器的setLayout 方法 來設定該容器的布局方式 下面我們?yōu)榇蠹揖唧w介紹幾種主要的布局管理器 16 6 1BorderLayout管理器 BorderLayout布局管理器將容器劃分為東 East 西 West 南 South 北 North 中 Center 五個區(qū)域 它是Frame類的默認布局管理器 采用BorderLayout布局時 向容器中添加組件需要指定組件所在的區(qū)域 其大致所分區(qū)域如圖16 43所示 16 6 1BorderLayout管理器 BorderLayout類的主要構造方法如圖16 44所示 圖中參數(shù)align指定了布局的位置 如表16 5所示 16 6 2FlowLayout管理器 流動布局是使用FlowLayout類來創(chuàng)建的 該布局方式是最簡單的一種布局管理器 其排列組件的方式是按照 從左到右排列 當組件排列到容器行尾時 會自動換行并繼續(xù)排列剩下的組件 它是Panel類的默認布局管理器 我們可以調(diào)用相關方法設置不同的組件間距 行距以及對齊方式 FlowLayout管理器的布局示意圖如圖16 46所示 16 6 2FlowLayout管理器 FlowLayout類的主要構造方法如圖16 47所示 16 6 2FlowLayout管理器 圖中參數(shù)align指定一種對齊方式 其具體描述如表16 6所示 如果對窗體的大小進行調(diào)整 組件在流布局中會根據(jù)窗體調(diào)整的大小重新調(diào)整其位置 如圖16 49所示 16 6 3CardLayout管理器 網(wǎng)格布局GridLayout管理器 可以將容器劃分為若干行與若干列的網(wǎng)格區(qū)域 并將組件放置在由行和列組成的網(wǎng)格中 采用GridLayout布局時 在容器中按照從左到右 從上到下的順序往網(wǎng)格中逐個添加組件 GridLayout管理器的布局示意圖如圖16 50所示 16 6 3CardLayout管理器 GridLayout類的主要構造方法如圖16 51所示 GridLayout類提供的對網(wǎng)格布局中的行 列 以及水平和垂直間距進行設置的方法如表16 7所示 16 6 4GridBagLayout管理器 GridBagLayout布局管理器在GridLayout布局管理器的基礎上提供了更加復雜的功能 采用GridBagLayout布局時 一個組件可以跨越多個行列放在多個網(wǎng)格內(nèi) 另外 可以通過設定填充方式 間距等任意調(diào)整組件的大小和位置 GridBagLayout管理器的布局示意圖如圖16 53所示 16 6 4GridBagLayout管理器 GridBagLayout類的構造方法與GridLayout類的構造方法基本相同 只是在GridLayout類基礎上又增加了一些屬性 如表16 8所示 16 6 5CardLayout管理器 CardLayout布局管理器用于將組件以卡片的形式進行布局 采用CardLayout布局 每張卡片屬于不同的層次 并且充滿整個容器 它將容器中的每個組件看作一張卡片 任何情況下 一次只能看到一張卡片 即一次只有一個組件可見 組件的順序由組件對象本身在容器內(nèi)部的順序決定 CardLayout管理器的布局示意圖如圖16 55所示 16 6 5CardLayout管理器 CardLayout類的主要構造方法如圖16 56所示 CardLayout類提供了一些方法用來翻轉(zhuǎn)該布局中的組件 具體方法及其描述如表16 9所示 16 6 5CardLayout管理器 我們可以單擊 前一張卡片 按鈕和 后一張卡片按鈕 發(fā)現(xiàn)實際顯示在窗體的只能是一個按鈕 且它們是按順序排列的 如圖16 58所示 16 6 6不使用布局管理器定位組件 不同的布局管理器會將組件定位在不同的位置 但是 有些時候并不想使用指定的某個布局管理器對組件進行定位 而是想按照自己的設計對組件進行定位 這時我們可以使用setBounds 方法來完成這一任務 setBounds 方法的語法格式如圖16 59所示 16 7Swing的事件處理 前面幾小節(jié)的主要內(nèi)容是討論組件的使用以及容器的布局 這些內(nèi)容使Java圖形用戶界面的程序設計變得靈活方便 與圖形界面程序密切相關的還有一個比較重要的內(nèi)容 事件處理機制 16 7 1事件處理機制概述 事件處理是圖形界面與用戶進行交互的重要內(nèi)容 Java語言的事件處理機制包括事件源 事件 事件處理器三個主要的概念 首先需要為事件源注冊相應的事件處理器 事件源產(chǎn)生指定事件后 事件處理器捕獲后進行相應事件處理 其大致處理機制如圖16 61所示 16 7 1事件處理機制概述 以下是對三個概念的說明 事件源 產(chǎn)生事件的各種組件 如窗口 按鈕 復選框等 事件 用戶對事件源的各種操作動作 事件處理器 用于接收并處理事件的方法 在圖形用戶界面的程序中 用戶的不同操作 如單擊鼠標 移動鼠標 鍵盤輸入等 會引發(fā)不同的事件類型 而不同的事件 需要相對應的事件監(jiān)聽器來監(jiān)聽并處理事件 在本節(jié)中就來講解Java中有什么類型的事件 不同類型時間需要哪些特定類型事件監(jiān)聽器來處理 16 7 2事件監(jiān)聽器 實現(xiàn)事件處理 首先要實現(xiàn)監(jiān)聽器接口 然后調(diào)用事件源對象中的方法來一個添加監(jiān)聽器對象 當事件發(fā)生后 事件源會調(diào)用監(jiān)聽器接口中的方法 通過將事件對象傳遞給相應的監(jiān)聽器方法來實現(xiàn)對事件的處理 16 7 2事件監(jiān)聽器 每種事件類都有對應的事件監(jiān)聽器 它是事件監(jiān)聽器類的接口 各種事件類的接口描述如表16 10所示 16 7 3焦點事件 焦點事件類 FocusEvent 是指用戶程序界面的組件焦點發(fā)生改變 即焦點從一個對象轉(zhuǎn)移到另外一個對象 時 就會發(fā)生焦點事件 得到焦點事件的組件處于激活狀態(tài) 使用焦點事件必須給組件增加一個FocusListener接口的事件處理器 該接口包含如下兩個方法 如圖16 63所示 16 7 4鍵盤事件 鍵盤事件用于處理用戶在鍵盤上輸入的信息 其中回車鍵的輸入還可以通過ActionListener進行處理 表示鍵盤事件的類是KeyEvent 這個類除了包含有產(chǎn)生鍵盤事件的事件源 還包含了用戶當前輸入的是哪一個鍵的信息 實現(xiàn)該事件的類需要實現(xiàn)KeyListener接口 該接口中的方法如圖16 65所示 16 7 4鍵盤事件 鍵盤事件類的方法及方法描述如表16 10所示 16 7 5鼠標事件 鼠標事件類 MouseEvent 指組件中發(fā)生的鼠標動作事件 如按下鼠標 釋放鼠標 單擊鼠標 鼠標光標進入或離開組件的幾何圖形 移動鼠標 拖動鼠標 當鼠標移動到某個區(qū)域或鼠標單擊某個組件時就會觸發(fā)鼠標事件 使用鼠標事件必須給組件添加一個MouseListener接口的事件處理器 16 7 5鼠標事件 MouseListener接口的方法如圖16 67所示 鼠標事件類的方法及方法描述如表16 11所示 16 7 6窗口事件 窗口事件 WindowEvent 指窗口狀態(tài)改變的事件 如當窗口Window對象的打開 關閉 激活 停用 或者焦點轉(zhuǎn)移到窗口內(nèi) 以及焦點移除而生成的事件 一般發(fā)生在Window Frame Dialog等類的對象上 使用窗口事件必須為組件添加一個實現(xiàn)WindowListener接口的事件處理器 16 7 6窗口事件 WindowListener接口的方法如圖16 69所示 16 7 7事件適配器 Java除了提供實現(xiàn)監(jiān)聽器接口的方法處理事件 還提供了另外一種簡單的實現(xiàn)監(jiān)聽器的手段 事件適配器 EventAdapter 程序員可以通過繼承事件所對應的適配器類 重寫感興趣的方法 不感興趣的方法可以置之不理 java awt event包中定義的事件適配器類包括以下幾個 ComponentAdapter 組件適配器 ContainerAdapter 容器適配器 FocusAdapter 焦點適配器 KeyAdapter 鍵盤適配器 MouseAdapter 鼠標適配器 MouseMotionAdapter 鼠標運動適配器 WindowAdapter 窗口適配器 16 8小結(jié) 本章是Java圖形界面的核心內(nèi)容 也是難度比較大的內(nèi)容 首先介紹了AWT和Swing的基本概念 然后介紹了容器類的知識 接著重點講述了Swing中常用的基本組件和高級組件 最后為大家講解了布局管理器和事件處理的知識 本章的重點是容器類 常用組件以及布局管理器的理解和運用 難點是對事件處理的理解 希望大家多加練習鞏固 以更好地在今后工作中熟練地使用圖形界面程序- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 輕松 Java 圖形界面 編程
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.szxfmmzy.com/p-8557247.html