Java圖形用戶界面編程.ppt
《Java圖形用戶界面編程.ppt》由會員分享,可在線閱讀,更多相關《Java圖形用戶界面編程.ppt(33頁珍藏版)》請在裝配圖網(wǎng)上搜索。
線程 是進程內部單一的一個順序控制流 線程和進程每個進程都有獨立的代碼和數(shù)據(jù)空間 進程上下文 進程切換的開銷大 線程 輕量的進程 同一類線程共享代碼和數(shù)據(jù)空間 每個線程有獨立的運行棧和程序計數(shù)器 PC 線程切換的開銷小 多線程 在同一個進程中有多個順序流同時執(zhí)行Java的線程是通過java lang Thread類來實現(xiàn)的 每個線程都是通過某個特定Thread對象所對應的方法run 來完成其操作的 方法run 稱為線程體 即線程的可執(zhí)行代碼 返回 多線程回顧 多線程回顧 要將一段代碼在一個新的線程上運行 該代碼應該在一個類的run函數(shù)中 并且函數(shù)所在的類是Thread類的子類 子類要覆蓋Thread類中的run函數(shù) 在子類的run函數(shù)中調用想在新線程上運行的程序代碼 啟動一個新的線程 我們不是直接調用Thread的子類對象的run函數(shù) 而是調用Thread子類對象的start 從Thread類繼承到的 方法 Thread類對象的start方法將產(chǎn)生一個新的線程 并在該線程上運行該Thread類對象中的run方法 由于線程的代碼段在run方法中 那么該方法執(zhí)行完成后線程也就相應的結束了 因而我們可以通過控制run方法中循環(huán)的條件來控制線程的結束 1 繼承類ThreadpublicclassMythreadextendsThread2 實現(xiàn)接口RunnablepublicclassMythreadimplementsRunnable3 上述兩種方法中都可用類Thread產(chǎn)生線程的對象Threadnewthread 4 創(chuàng)建并啟動線程newthread newThread newthread start 5 run方法是運行線程的主體 啟動線程時 由JVM直接調用publicvoidrun 6sleep方法的作用 暫停 毫秒時間的 線程的執(zhí)行 讓其它線程得到機會 sleep要丟出異常 必須捕獲 Try sleep 1000 catch InterruptedExceptione 返回 多線程回顧 第12章圖形用戶界面 GUI GraphicsUserInterface Java2平臺包括 標準版 J2SE 企業(yè)版 J2EE 和微縮版 J2ME 三個版本 J2SE J2ME和J2EE 這也就是SunONE OpenNetEnvironment 體系 J2SE就是Java2的標準版 主要用于桌面應用軟件的編程 J2ME主要應用于嵌入式系統(tǒng)開發(fā) 如手機和PDA的編程 J2EE是Java2的企業(yè)版 主要用于分布式的網(wǎng)絡程序的開發(fā) 如電子商務網(wǎng)站和ERP系統(tǒng) 補充計算機基礎知識 什么是C S模式 C S Client Server 客戶機 服務器 模式又稱C S結構 是軟件系統(tǒng)體系結構的一種 C S模式簡單地講就是基于企業(yè)內部網(wǎng)絡的應用系統(tǒng) 與B S Browser Server 瀏覽器 服務器 模式相比 C S模式的應用系統(tǒng)最大的好處是不依賴企業(yè)外網(wǎng)環(huán)境 即無論企業(yè)是否能夠上網(wǎng) 都不影響應用 什么是B S模式 B S Browser Server 瀏覽器 服務器 模式又稱B S結構 它是隨著Internet技術的興起 對C S模式應用的擴展 在這種結構下 用戶工作界面是通過IE瀏覽器來實現(xiàn)的 B S模式最大的好處是運行維護比較簡便 能實現(xiàn)不同的人員 從不同的地點 以不同的接入方式 比如LAN WAN Internet Intranet等 訪問和操作共同的數(shù)據(jù) 最大的缺點是對企業(yè)外網(wǎng)環(huán)境依賴性太強 由于各種原因引起企業(yè)外網(wǎng)中斷都會造成系統(tǒng)癱瘓 補充計算機基礎知識 一 B S模式的優(yōu)點和缺點B S結構的優(yōu)點 1 具有分布性特點 可以隨時隨地進行查詢 瀏覽等業(yè)務處理 2 業(yè)務擴展簡單方便 通過增加網(wǎng)頁即可增加服務器功能 3 維護簡單方便 只需要改變網(wǎng)頁 即可實現(xiàn)所有用戶的同步更新 4 開發(fā)簡單 共享性強B S模式的缺點 1 個性化特點明顯降低 無法實現(xiàn)具有個性化的功能要求 2 操作是以鼠標為最基本的操作方式 無法滿足快速操作的要求 3 頁面動態(tài)刷新 響應速度明顯降低 4 無法實現(xiàn)分頁顯示 給數(shù)據(jù)庫訪問造成較大的壓力 5 功能弱化 難以實現(xiàn)傳統(tǒng)模式下的特殊功能要求 二 C S模式的優(yōu)點和缺點C S模式的優(yōu)點1 由于客戶端實現(xiàn)與服務器的直接相連 沒有中間環(huán)節(jié) 因此響應速度快 2 操作界面漂亮 形式多樣 可以充分滿足客戶自身的個性化要求 3 C S結構的管理信息系統(tǒng)具有較強的事務處理能力 能實現(xiàn)復雜的業(yè)務流程 C S模式的缺點1 需要專門的客戶端安裝程序 分布功能弱 針對點多面廣且不具備網(wǎng)絡條件的用戶群體 不能夠實現(xiàn)快速部署安裝和配置 2 兼容性差 對于不同的開發(fā)工具 具有較大的局限性 若采用不同工具 需要重新改寫程序 3 開發(fā)成本較高 需要具有一定專業(yè)水準的技術人員才能完成 補充計算機基礎知識 7 1圖形用戶界面設計基礎 圖形用戶界面 GraphicsUserInterface 簡稱GUI 是指以圖形的方式實現(xiàn)人與計算機之間的交互 在該界面下用戶往往只需通過單擊 雙擊 拖曳鼠標和簡單的文字鍵入就可以輕松地操作計算機完成任務 圖形用戶界面生動形象 操作直觀簡便 一 AWT與Swing Java類庫中提供AWT AbstractWindowToolkit 抽象窗口工具集 和Swing兩套組件是Java類庫中提供的兩類來實現(xiàn)圖形用戶界面 AWT由java awt包提供 Swing由javax swing包提供 其中均包含了用于設計圖形用戶界面的各種組件 布局管理器和事件類 Swing是Java語言提供的第二代設計工具 它以AWT為基礎 提供了比AWT更多的特性和工具 用于建立更復雜的圖形用戶界面 現(xiàn)在常采用Swing組件來開發(fā)GUI應用程序 1 Swing組件的體系結構 基本組件Component 容器Container 2 Swing組件的分類 從功能上分為 容器和基本組件 容器又分為頂層容器和中間層容器 頂層容器 JFrame JDialog JApplet 用于構造圖形用戶界面的窗口 并容納其它容器和組件 它們可以獨立存在 中間層容器 JPanel JScrollPane JToolBar等 容納其它組件 但是不能獨立存在 需要添加到其它容器中 通常用來按功能組織基本組件 基本組件 按鈕JButton 文本框JTextField等等 是圖形用戶界面的基本組成單位 不能獨立存在 必須將其添加到一定的容器中 二 容器與布局管理器 容器用于容納組件 布局管理器用來設置容器中各個組件的排列方式 1 頂層容器與窗口每一個Java的GUI程序都必須至少包含一個頂層容器組件作為窗口 Swing中最常用的頂層容器類 JFrame 用它創(chuàng)建的框架窗口可以獨立存在 并且?guī)в羞吙?標題及用于關閉和最大化 最小化窗口的圖標按鈕 創(chuàng)建一個框架窗口 importjavax swing publicclassJFrameDemoextendsJFrame publicJFrameDemo super JFrame窗口 setBounds 50 50 300 120 setDefaultCloseOperation EXIT ON CLOSE setVisible true publicstaticvoidmain String args JFrameDemof newJFrameDemo JFrame類常用的方法 voidsetLayout LayoutManagermanager viodadd Componentcomp voidsetBounds intx inty intwidth intheight voidsetTitle Stringtitle voidsetVisible Booleanb setDefaultCloseOperation EXIT ON CLOSE ContainergetContentPane 所列出的大部分方法也適用于其它容器和組件 2 布局管理器 布局管理器是java awt包中提供的專門用于設置容器中組件排列方式的類 常用的有FlowLayout BorderLayout和GridLayout等幾種 每一種容器都有一個默認的布局管理器 通過setLayout方法可以改變容器的布局方式 流式布局舉例 publicclassFlowLayDemoextendsJFrame privateJButtonmyButton1 myButton2 myButton3 myButton4 myButton5 publicFlowLayDemo FlowLayDemo類的構造方法super 流式布局 setBounds 50 50 300 120 setLayout newFlowLayout 設置窗口為流式布局setDefaultCloseOperation EXIT ON CLOSE setVisible true myButton1 newJButton 第一個按鈕 生成按鈕對象myButton2 newJButton 第二個按鈕 myButton3 newJButton 第三個按鈕 myButton4 newJButton 第四個按鈕 myButton5 newJButton 第五個按鈕 add myButton1 添加按鈕到窗口上圖7 4 a 流式布局add myButton2 add myButton3 add myButton4 add myButton5 publicstaticvoidmain String args FlowLayDemof newFlowLayDemo 邊界布局舉例 publicclassBorLayDemoextendsJFrame privateJButtonmyButton1 myButton2 myButton3 myButton4 myButton5 publicBorLayDemo super 邊界布局 setBounds 50 50 300 120 setLayout newBorderLayout 設置窗口為邊界布局setDefaultCloseOperation EXIT ON CLOSE setVisible true myButton1 newJButton 東邊按鈕 myButton2 newJButton 南邊按鈕 myButton3 newJButton 西邊按鈕 myButton4 newJButton 北邊按鈕 myButton5 newJButton 中間按鈕 add East myButton1 添加按鈕到窗口指定方位add South myButton2 add West myButton3 add North myButton4 add Center myButton5 publicstaticvoidmain String args BorLayDemof newBorLayDemo 網(wǎng)格布局舉例 publicclassGridLayDemoextendsJFrame privateStringnames 按鈕1 按鈕2 按鈕3 按鈕4 按鈕5 按鈕6 publicGridLayDemo super 網(wǎng)格布局 setBounds 50 50 300 120 setLayout newGridLayout 3 3 設置三行三列網(wǎng)格布局setDefaultCloseOperation EXIT ON CLOSE setVisible true for inti 0 i names length i add newJButton names i 依次添加各個按鈕 publicstaticvoidmain String args GridLayDemof newGridLayDemo 一 常用Swing組件 1 JLabel 標簽標簽用于在窗口界面上顯示一行提示性或說明性的文字 標簽只能顯示信息 不能用于輸入 JLabel類比較常用的方法有 StringgetText 獲取標簽上的文字voidsetText Stringtext 設置標簽顯示的文字為textvoidsetFont Fontf 設置標簽文字的字體 一 常用Swing組件 2 JButton 按鈕按鈕是圖形用戶界面中最常見的組件 用來控制程序運行的方向 用戶單擊按鈕時會產(chǎn)生ActionEvent事件 計算機將相應地執(zhí)行一系列命令完成一定功能 JButton類比較常用的方法有 voidsetText Stringtext 設置按鈕上的標識文字為textStringgetText 獲得按鈕上的標識文字 一 常用Swing組件 3 JTextField 文本框文本框是一個單行文本編輯框 用于接收用戶輸入的一行文字 也可以顯示一行文字 JTextField類比較常用的方法有 StringgetText 獲得文本框中的文本內容voidsetText Stringtext 設置文本框的文本內容 一 常用Swing組件 4 JTextArea 文本區(qū)文本區(qū)是一個多行文本編輯框 用于接收用戶輸入的多行文字 也可以顯示多行文字 當文本區(qū)的內容裝滿時不會自動產(chǎn)生滾動條 需要將文本區(qū)組件添加到JScrollPane 滾動面板 上才能實現(xiàn)滾動條效果 JTextArea類具有上面列出的JTextField的相同方法 另外其比較常用的方法還有 StringgetSelected 獲取被選中的文本voidappend Stringtext 在文本區(qū)尾部添加文本text 一 常用Swing組件 5 JRadioButton 單選按鈕單選按鈕只有 選中 和 未選中 兩種狀態(tài) 通常用一組單選按鈕實現(xiàn) 多選一 的功能 在java中必須使用按鈕組類 javax swing ButtonGroup 實現(xiàn)將多個單選按鈕位于同一組中 注意 ButtonGroup僅僅是一個邏輯上的組件 在Palette組件板上并不存在該組件 因此需要自行定義ButtonGroup類的對象 并調用該類的add 方法將多個JRadioButton對象一一添加到ButtonGroup類對象中 JRadioBunon類比較常用的方法有 voidsetSelected booleanb 設置一個單選按鈕的狀態(tài) b為true表明選中voidsetText Stringtext 設置單選按鈕上顯示的文字booleanisSelected 返回按鈕的狀態(tài) 如果是選中的則返回true 否則返回false 一 常用Swing組件 6 JCheckBox 復選框復選框也有 選中 和 未選中 兩種狀態(tài) 通常用一組復選框提供一組選項供用戶選擇 與單選按鈕不同的是 在一組復選框中 可以同時選中多個復選框 也可以不選中任何一個復選框 JCheckBox類比較常用的方法基本上與JRadioButton類的相同 一 常用Swing組件 7 JList 列表框列表框能夠容納并顯示一組選項 供用戶從中選擇一項或多項 但不能對其進行編輯 與文本區(qū)相似 列表框中的內容增多時不會自動產(chǎn)生滾動條 也需要通過JScrollPane 滾動面板 才能實現(xiàn)滾動條效果 JList類比較常用的方法有 JList 創(chuàng)建一個沒有選項的列表框JList Vectorvect 創(chuàng)建一個列表框 其中的選項由向量表vect決定JList Objectitems 創(chuàng)建一個列表框 其中的選項由對象數(shù)組items決定voidsetSelectionMode intselectionMode 設置列表框支持單選還是多選voidsetVisibleRowCount intvisibleRowCount 設置列表框中可顯示的行數(shù)ObjectgetSelectedValue 獲取被選中項的內容intgetSelectedIndex inti 獲取被選中項的序號 從0開始 沒有選中時值為 1voidsetListData VectorlistData 設置列表框中的選項 參數(shù)是一個向量表 一 常用Swing組件 8 JComboBox 組合框組合框是向用戶提供多種選項的組件 其通常的顯示形式是右邊帶有下拉箭頭的文本框 可以在其文本框中輸人選項 也可以單擊下拉箭頭從顯示的列表中進行選擇 默認組合框是不能編輯的 需要通過setEditable true 設為可編輯 JComboBox類比較常用的方法有 JComboBox 建立一個無選項的組合框JComboBox Object items 創(chuàng)建一個組合框 其中的選項由對象數(shù)組items決定voidaddItem Objectobject 通過字符串類或其他類為組合框添加選項intgetSelectedIndex 獲取被選中項的序號 從0開始 沒有選中時值為 1ObjectgetSelectedItem 獲得被選中項的內容 一 常用Swing組件 9 JScrollPane 滾動面板滾動面板是一個帶滾動條的中間層容器 通常利用它為Swing組件中的文本區(qū) JTextArea 列表 JLIst 等組件添加滾動條 具體操作方法 先從Palette組件板上選取一個JScrollPane組件 在設計區(qū)上畫出適當大小的區(qū)域 然后再選取一個JTextArea或JLIst組件添加到該JScrollPane上 這樣文本區(qū)或列表框就會帶有滾動條了 一 常用Swing組件 10 JPanel 面板JPanel是 個無邊框的中間層容器 使用面板的目的是為了在窗口上分層次 分區(qū)域管理各種組件 適合比較復雜的GUI 一個窗口中可以添加多個JPanel對象 JPanel類的最常用的方法是add 方法和setLayout 方法 分別用于添加組件 設置面板布局 對于開發(fā)項目布局 有專業(yè)的的可視化編程工具 前臺美工負責 三 初識事件及事件處理 圖形用戶界面中人機交互的實現(xiàn)是通過組件響應各種事件來實現(xiàn)的 事件 通俗的講是指在GUI程序系統(tǒng)中用戶按需要激發(fā)的某一動作 如按鈕單擊 鼠標移動等事件源 事件發(fā)生的對象 如上述的按鈕 鼠標事件處理 可以簡單理解為當某個事件發(fā)生時需要執(zhí)行的動作 語句序列 簡單例子 首先要做的是為事件注冊相對應的事件處理器 并制定事件 然后由事件處理器獲取后進行相應的事件處理 事件監(jiān)聽器事件監(jiān)聽器是監(jiān)聽所觸發(fā)事件的對象 其中包含有對事件發(fā)生后的事件處理操作 對于不同的事件 Java中也定義了所相應的事件監(jiān)聽器接口 如下是幾個比較常用的事件監(jiān)聽器接口 ActionListener 接收操作事件的監(jiān)聽器接口 AdjustmentListener 接收調整事件的監(jiān)聽器接口 FocusListener 接收組件上的鍵盤焦點事件的監(jiān)聽器接口 InputMethodListener 接收輸入方法事件的監(jiān)聽接口 KeyListener 用于接收鍵盤事件的監(jiān)聽接口 MouseListener 接收組件上的鼠標事件 包括按下 單擊 進入或者離開 的監(jiān)聽器接口 MouseMotionListener 接收組件上的鼠標移動事件的監(jiān)聽接口 MouseWheelListener 接收組件上的鼠標滾輪事件的監(jiān)聽接口 TextListener 接收文本事件的監(jiān)聽器接口 WindowListener 接收窗口事件的監(jiān)聽接口 簡單例子 使用監(jiān)聽器 首先要定義監(jiān)聽器類 并實現(xiàn)相應的監(jiān)聽器接口 然后要在組件上使用addXxxxListener的方式為組件添加事件監(jiān)聽 然后設置相應的事件處理方法 當組件中的事件觸發(fā)后 就會根據(jù)所添加的事件處理方法進行事件處理 implementsActionListener ItemListenerjb1 addActionListener this c2 addItemListener this 簡單例子 MyMenuTestMenuBarCalcuateDemo- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- Java 圖形 用戶界面 編程
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.820124.com/p-6359870.html