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