版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、11.AWT編程講師:瘋狂軟件 本章要點GUI與AWTAWT容器與布局管理器對話框機制AWT繪圖機制剪貼板瘋狂軟件 圖形用戶界面作為一個程序設(shè)計者,必須優(yōu)先考慮用戶的感受,一定要讓用戶感到“爽”,我們的程序才會被需要、被使用,這樣的程序才有價值。當JDK1.0發(fā)布時,Sun提供了一個基本的GUI類庫,這個GUI類庫希望可以在所有平臺下都能運行,這套基本類庫被稱為“抽象窗口工具集(Abstract Window Toolkit)”,它為Java應(yīng)用程序提供了基本的圖形組件。瘋狂軟件 AWT簡介當JDK1.0發(fā)布時
2、,Sun提供了一個基本的GUI類庫,這個GUI類庫希望可以在所有平臺下都能運行,這套基本類庫被稱為“抽象窗口工具集(Abstract Window Toolkit)”,它為Java應(yīng)用程序提供了基本的圖形組件。AWT (Abstract Window Tools):抽象窗口工具瘋狂軟件 AWT的問題使用AWT作出的圖形用戶界面在所有平臺上都顯得很,功能也非常有限。AWT為了迎合所有主流操作系統(tǒng)的界面設(shè)計,AWT組件只能使用這些操作系統(tǒng)上圖形界面組件的交集,所以不能使用特定操作系統(tǒng)上復(fù)雜的圖形界面組件,最多只能使用四種字體。AWT用的是非常笨拙的,非面向?qū)ο蟮木幊棠J?/p>
3、。瘋狂軟件 Swing組件Swing為絕大部分的界面組件都提供了實現(xiàn)。這些界面組件都是直接繪制空白區(qū)域上。Swing自己實現(xiàn)了這些界面組件,因此Swing無需使用各操作系統(tǒng)上界面組件的交集。由于Swing不再需要調(diào)用操作系統(tǒng)上相應(yīng)的界面組件,Swing的UI界面更加統(tǒng)一。瘋狂軟件 nerManagerjava.awt包在這個包中,提供了基本的java程序GUI設(shè)計工具: Component/MenuComponent Contai Layout瘋狂軟件 Container(容器)容器(Container)實際上
4、是Component的子類,因此容器類對象本身也是一個組件,具有組件的所有性質(zhì),另外還具有容納其它組件和容器的功能。容器類對象可使用方法add()添加組件兩種主要的容器類型Window:可獨立存在的頂級窗口Panel:可作為容器容納其它組件,但不能獨立存在, 必須被添加到其它容器中(如Window 或Applet)瘋狂軟件 Container層次關(guān)系圖ContainerScrollPaneWindowPanelFrameDialogApplet瘋狂軟件 Container常用方法add()setLocation(): 設(shè) 置 位 置 。
5、 setSize(): 設(shè) 置 大 小 setBoundes():同時設(shè)置大小、位置。setVisible()pack()瘋狂軟件 組件定制組件的大小和位置由布局管理器(LayoutManager)決定。不使用布局管理器則可以定制組件的大小和位置,但必須在容器中使用組件的setLocation(), setSize(), setBounds()方法確定大小位置瘋狂軟件 Frame類代表一個窗口。是Window類的子類有標題,可通過拖拉改變大小初始化時為不可見,可用setVisible(true)使其顯示出來使用BorderLayout作為
6、其缺省布局管理器使用setLayout方法改變布局管理器瘋狂軟件 Panel為放置組件提供空間允許使用自己的布局管理器不能單獨存在,必須放置到其他容器中瘋狂軟件 Container的布局管理器為了使我們生成的圖形用戶界面具有良好的平臺無關(guān)性,Java語言中,提供了布局管理器這個工具來管理組件在容器中的布局,而不使用直接設(shè)置組件位置和大小的方式。瘋狂軟件 Container的布局管理器AWT中的布局管理器有: FlowLayout BorderLayout GridLayout CardLayout GridBa
7、gLayout瘋狂軟件 FlowLayoutGUI Component從左到右按順序配置在Container中,若到達右邊界,則會折回到下一行中FlowLayout是Panel和Applet的默認管理器FlowLayout()/ FlowLayout(int align)/ FlowLayout(int align,int hgap,int vgap)FlowLayout.LEFT/ FlowLayout.CENTER/ FlowLayout.RIGHT默認為靠中對齊使用組件的理想尺寸瘋狂軟件 BorderLayoutBorderLayo
8、ut將Container分為EAST、SOUTH、WEST、NORTH、CENTER五個區(qū)域, Component可以放置在這五個區(qū)域的任何一個BorderLayout是Frame、Dialog的默認管理器每個區(qū)域只能放一個組件。如果在一個區(qū)域中放入多個Component,后放入的Component會把前面的覆蓋BorderLayout()/ BorderLayout(int hgap,int vgap)BorderLayout.EAST、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.SOUTH、BorderLayout.CENTER瘋狂軟
9、件 th和Center區(qū)域水平和Ce直調(diào)nter區(qū)域垂BorderLayout(con.)BorderLayout布局格式:當改變?nèi)萜鞔笮r 當某個區(qū)域沒有組件時,它的空間會被自動占滿。 North, Sou East, West調(diào)整整瘋狂軟件 NorthWestCenterEastSouthGridLayoutGridLayout將Component配置在縱橫格線分割的格子中,從左到右,從上到下;構(gòu)造器:GridLayout()/ GridLayout(int rows,int cols)/ GridLayout(int rows,in
10、t cols,int hgap,int vgap)瘋狂軟件 GridBagLayoutGridBagLayout布局管理器是功能最強大,但也是最復(fù)雜的布局管理器,與GridLayout布局管理器不同的是:在GridBagLayout布局管理器中,一個組件可以跨越一個或多個網(wǎng)格,并可以設(shè)置各網(wǎng)格的大小互不相同,從而增加了布局的靈活性。當窗口的大小發(fā)生變化時,GridBagLayout 布局管理也可以準確地控制窗口各部分的反應(yīng)。為了處理GridBagLayout中GUI組件的大小、跨越性,Java提供了GridBagConstraints對象,該對象與特定的GUI組件關(guān)
11、聯(lián),用于控制該GUI組件的大小、跨越性。瘋狂軟件 CardLayout將加入到Container中的Component看成一疊卡片, 只有最上面的那個Componet才可見構(gòu)造器:CardLayout()/ CardLayout(int hgap,int vgap)控制組件可見的方法:first(Container target) / last(Container target) /previous(Container target)/next(Container target) /show(Container target,String name)瘋狂軟件 www
12、.CardLayout將加入到Container中的Component看成一疊卡片, 只有最上面的那個Componet才可見構(gòu)造器:CardLayout()/ CardLayout(int hgap,int vgap)控制組件可見的方法:first(Container target) / last(Container target) /previous(Container target)/next(Container target) /show(Container target,String name)瘋狂軟件 絕對定位Java也提供了那種拖控件
13、的方式,即Java也可以對GUI組件進行絕對定位。在Java 容器中采用絕對定位的步驟如下: (1)將Container的布局管理器設(shè)成null:setLayout(null)。 (2)往容器上加組件的時候,先調(diào)用setBounds()或setSize()方法來先設(shè)置組件的大小、位置?;蛘咧苯觿?chuàng)建GUI組件時通過構(gòu)造參數(shù)指定該組件的大小、位置,然后將該組件添加到容器中。瘋狂軟件 BoxLayout布局管理器GridBagLayout布局管理器雖然功能強大,但它是在太復(fù)雜了,以Swing引入了一個新的布局管理器:BoxLayout。它保留了GridBagLayout的
14、很多優(yōu)點,但是卻沒那么復(fù)雜。BoxLayout可以在垂直和水平兩個方向上擺放GUI組件, BoxLayout提供了一個如下的簡單構(gòu)造器:BoxLayout(Container target, int axis):指定創(chuàng)建基于target容器的BoxLayout布局管理器,該布局管理器里組件案axis方向排列。其中axis有BoxLayout.X_AXIS(橫向)和BoxLayout.Y_AXIS(縱向)兩個方向。瘋狂軟件 基本組件Button:按鈕,可接收單擊操作。 Canvas: 用 于 繪 圖 的 畫 布 。 Checkbox:復(fù)選框組件(也可變成單選框組件)。
15、CheckboxGroup:用于將多個Checkbox組件組合成一組,一組Checkbox組件將只有一個可以被選中,即全部變成單選框組件。 Choice:下拉式選擇框組件。Frame:窗口,在GUI程序里通過該類創(chuàng)建窗口。Label:標簽類,用于放置提示性文本。List。列表框組件,可以添加多項條目。Panel:不能單獨存在基本容器類,必須放到其他容器中。 Scrollbar:滑動條組件。如果需要用戶輸入位于某個范圍的值,就可以使用滑動條組件。如調(diào)色板中設(shè)置RGB的三個值所用的滑動條。當創(chuàng)建一個滑動條時,必須指定它的方向、初始值、滑塊的大小、最小值和最大值。ScrollPane:帶水平及垂直滾
16、動條的容器組件。TextArea: 多 行 文 本 域 。 TextField:單行文本框。瘋狂軟件 對話框?qū)υ捒蚴荳indow類的子類,是一個容器類,屬于特殊組件。對話框也是可以獨立存在的頂級窗口,因此用法與 普通窗口用法幾乎完全一樣。但對話框有兩點需要注意:對話框必須依賴于其他窗口,就是必須有一個parent窗口。對話框有非模式(non-modal)和模式(modal)兩種,當某個模式對話框開之后,該模式對話框總是位于它依賴的窗口之上;在模式對話框被關(guān)閉之前,它依賴的窗口無法獲得焦點。對話框有多個重載的構(gòu)造器,它的構(gòu)造器可能有如下三個參數(shù):owner:指定該對話
17、框所依賴的窗口,既可以是窗口,也可以是對話框。title:指定該對話框的窗口標題。 modal:指定該對話框是否是模式的,可以是true或false。瘋狂軟件 FileDialogDialog類還有一個子類:FileDialog,它代表一個文件對話框,用于打開、或者保存 文件,F(xiàn)ileDialog也提供了幾個構(gòu)造器,分別可支持parent、title和mode三個構(gòu)造參數(shù), 其中parent、title指定文件對話框的所屬父 窗口和標題,而mode用于指定該窗口用于 打開文件、或保存文件,該參數(shù)支持如下 兩個參數(shù)值:FileDialog.LOAD、FileDialo
18、g.SAVE。瘋狂軟件 處理(Event) 一個對象,它描述了發(fā)生什么事情源(Event source) 產(chǎn)生的組件處理方法(Event handler) 能夠接收、解析和處理的方法類對象、實現(xiàn)和用戶交互瘋狂軟件 AWT的處理方式處理(delegation)個別的組處理委托給特定的對象,當委派式件將整個該組件發(fā)生指定的時,就所委托。這傾聽對的對象,有這個對象來處理這個個受委托處理的對象稱為象(event listener)每個組件均可以針對特定的指定一個傾聽對或多個傾聽對象,由這些象負責處理瘋狂軟件 AWT分類
19、EventObjectActionEventAWTEventTextEventItemEventAdjustmentEventComponentEventContainerEventWindowEventPaintEventFocusEventInputEventKeyEventMouseEvent瘋狂軟件 窗口當一個窗口被激活、撤銷激活、打開、關(guān)閉、最大化、最小化時,發(fā)生窗口。從WindowEvent類中創(chuàng)建的對象表示窗口。瘋狂軟件 不同類型的接口和方法瘋狂軟件 分類接口名方法ActionActionList
20、eneractionPerformed(ActionEvent)ItemItemListeneritemStateChanged(ItemEvent)Mouse MotionMouseMotionListenermouseDragged(MouseEvent) mouseMoved(MouseEvent)MouseMouseListenermousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseClicked(MouseEvent) mouseExited(MouseEvent)KeyKe
21、yListenerkeyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent)FocusFocusListenerfocusGained(FocusEvnet) focusLost(FocusEvent)不同類型的接口和方法瘋狂軟件 分類接口名方法AdjustmentAdjustmentListeneradjustmentValueChanged(AdjustmentEvent)ComponentComponentListenercomponentMoved(ComponentEvent) compone
22、ntHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent)WindowWindowListenerwindowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(Window
23、Event)ContainerContainerListenercomponentAdded(ContainerEvent) componentRemoved(ContainerEvent)TextTextListenertextValueChanged(TextEvent)適配器(Adapter)為簡化編程,針對大多數(shù)定義了相應(yīng)的實現(xiàn)類-適配器類中,實現(xiàn)了相應(yīng)器接口適配器類,在器接口中所有的方法,但不做任何事情。在定義器類時就可以繼承適配器類,并只重寫所需要的方法。瘋狂軟件 處理類的形式利用內(nèi)部類來處理用內(nèi)部類處理定義一個器類直接在當前類中處理瘋狂軟件 www.f
24、創(chuàng)建菜單創(chuàng)建一個菜單步驟:創(chuàng)建一個MenuBar對象,將其放置到菜單容器中(如Frame)創(chuàng)建若干個Menu對象,將其放置到MenuBar對象中創(chuàng)建若干個MenuItem對象,將其放置到Menu對象中MenuItem包括MenuItem:普通的菜單項CheckboxMenuItem:可以選擇的菜單項瘋狂軟件 右鍵菜單右鍵菜單使用PopupMenu對象表示,創(chuàng)建右鍵菜單的步驟如下:(1) 創(chuàng)建PopupMenu的實例。(2) 創(chuàng)建多個MenuItem實例,依次將這些實例加入PopupMenu中。(3) 將PopupMenu加入到目標組件之中。瘋狂軟件
25、 在AWT中畫圖通常,創(chuàng)建Canvas類或Panel的子類,并覆蓋paint方法每當組件出現(xiàn)時調(diào)用paint方法每個組件都有一個Graphics對象Graphics類實現(xiàn)了很多繪圖方法瘋狂軟件 AWT中的坐標x軸(0,0)(x,y)軸瘋狂軟件 yGraphics類Graphics是一個抽象的畫筆對象,Graphics可以在組件上繪制豐富多彩的幾何圖形和位圖,Graphics類提供了如下幾個方法用于繪制幾何圖形和位圖:drawLine: 繪 制 直 線 。 drawString: 繪 制 字 符 串 。 draw
26、Rect: 繪 制 矩 形 。 drawRoundRect: 繪 制 圓 角 矩 形 。 drawOval: 繪 制 橢 圓 形 狀 。 drawPolygon: 繪 制 多 邊 形 邊 框 。 drawArc:繪制一段圓弧(可能是橢圓的圓?。?。drawPolyline: 繪 制 折 線 。 fillRect: 填 充 一 個 矩 形 區(qū) 域 。 fillRoundRect:填充一個圓角矩形區(qū)域。fillOval: 填 充 橢 圓 區(qū) 域 。 fillPolygon:填充一個多邊形區(qū)域。fillArc:填充圓弧和圓弧兩個端點到中心連線所包圍的區(qū)域。drawImage:繪制位圖。瘋狂軟件 www
27、.BufferedImage實現(xiàn)類Image類代表了位圖,但它是一個抽象類,無法直接創(chuàng)建Image對象, 為此Java為它提供了一個BufferedImage實現(xiàn)類,它是一個可訪問圖 像數(shù)據(jù)緩沖區(qū)的Image實現(xiàn)類。該類提供了一個簡單的構(gòu)造器,用于創(chuàng)建一個BufferedImage對象:BufferedImage(int width, int height, int imageType):創(chuàng)建指定大小、指定圖象類型的BufferedImage對象,其中imageType可以是BufferedImage.TYPE_INT_RGB、BufferedImage.TYPE_BYTE
28、_GRAY等值。除此之外,BufferedImage還提供了一個getGraphics()方法返回該對象的Graphics對象,從而允許通過該Graphics對象向Image中添加圖形。借助于BufferedImage的幫助,我們可以在AWT中實現(xiàn)緩沖技術(shù):當我們需要向GUI組件上繪制圖形時,不要直接繪制到該GUI組件上, 而是先將圖形繪制到BufferedImage對象中,然后再調(diào)用組件的drawImage一次性地將BufferedImage對象繪制到特定組件上。瘋狂軟件 ImageIO輸入/輸出位圖ImageIO類并不能支持讀寫全部格式的圖形文件,程序可以通過I
29、mageIO類的如下幾個靜態(tài)方法來訪問該類所支持讀寫的圖形文件格式:getReaderFileSuffixes():返回一個String 數(shù)組,該數(shù)組列出ImageIO所有能讀的圖形文件的文件后綴。getReaderFormatNames():返回一個String 數(shù)組,該數(shù)組列出ImageIO所有能讀的圖形文件的非正式格式名稱。static String getWriterFileSuffixes():返回一個 String 數(shù)組,該數(shù)組列出ImageIO所有能寫的圖形文件的文件后綴。static String getWriterFormatNames():返回一個String 數(shù)組,該數(shù)組列出ImageIO所有能寫的圖形文件的非正式格式名稱。瘋狂軟件 剪貼板AWT支持兩種剪貼板:系統(tǒng)剪貼板和本地剪貼板,如果在同一個虛擬機的不同窗口之間進行數(shù)據(jù)傳遞,則無需使用系統(tǒng)剪貼板,使用系統(tǒng)剪貼板就可以了。系統(tǒng)剪貼板則與運行平臺無關(guān),可以傳輸任意格式的數(shù)據(jù)。瘋狂軟件 使用系統(tǒng)剪貼板Clipboard clipboard = Toolkit.getDefaultToolk
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年眉山藥科職業(yè)學院高職單招職業(yè)適應(yīng)性測試參考題庫有答案解析
- 2026年新疆科技職業(yè)技術(shù)學院高職單招職業(yè)適應(yīng)性測試備考題庫有答案解析
- 2026年泉州幼兒師范高等??茖W校單招綜合素質(zhì)考試參考題庫帶答案解析
- 外賓晚宴活動策劃方案(3篇)
- 活動策劃方案驗收結(jié)果(3篇)
- 圓桌派活動策劃方案(3篇)
- 華潤大廈活動方案策劃(3篇)
- 2026年遼寧冶金職業(yè)技術(shù)學院高職單招職業(yè)適應(yīng)性測試備考試題有答案解析
- 吉林省長春市寬城區(qū)2026屆九年級上學期1月期末考試道德與法治試卷(含答案)
- 2026重慶涪陵區(qū)人民政府義和街道選聘4人備考題庫必考題
- 2025至2030中國細胞存儲行業(yè)調(diào)研及市場前景預(yù)測評估報告
- 《中華人民共和國危險化學品安全法》解讀
- 水暖施工員考試及答案
- 2025年省級行業(yè)企業(yè)職業(yè)技能競賽(老人能力評估師)歷年參考題庫含答案
- 培養(yǎng)員工的協(xié)議書
- 1.1《子路、曾皙、冉有、公西華侍坐》教學課件2025-2026學年統(tǒng)編版高中語文必修下冊
- 2025天津中煤進出口有限公司面向中國中煤內(nèi)部及社會招聘第五批電力人才52人(公共基礎(chǔ)知識)測試題附答案解析
- 2025至2030氫過氧化叔丁基(TBHP)行業(yè)運營態(tài)勢與投資前景調(diào)查研究報告
- 2026年哈爾濱職業(yè)技術(shù)學院單招職業(yè)適應(yīng)性考試必刷測試卷附答案
- 通信行業(yè)項目經(jīng)理服務(wù)水平績效考核表
- 副高醫(yī)院藥學考試試題題庫及答案
評論
0/150
提交評論