版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Chapter12圖形用戶界面基礎(chǔ)1ObjectivesTodistinguishsimpleGUIcomponents(§12.2).TodescribetheJavaGUIAPIhierarchy(§12.3).Tocreateuserinterfacesusingframes,panels,andsimpleUIcomponents(§12.4).Tounderstandtheroleoflayoutmanagers(§12.5).TousetheFlowLayout,GridLayout,andBorderLayoutmanagerstolayoutcomponentsinacontainer(§12.5).TospecifycolorsandfontsusingtheColorandFontclasses(§12.6-12.7).TouseJPanelassubcontainers(§12.8).2引言學(xué)習(xí)本章有兩個(gè)目的:介紹JavaGUI程序設(shè)計(jì)的基礎(chǔ)知識(shí)。JavaGUIAPI的框架結(jié)構(gòu),GUI組件及組件間相互關(guān)系,容器和布局管理器,顏色,字體,邊界,圖像圖標(biāo),工具提示等。使用GUI演示面向?qū)ο蟪绦蛟O(shè)計(jì)。3Swingvs.AWT前面我們已經(jīng)使用過(guò)像JButton、JLabel等GUI組件,為何上述例子的GUI組件的類名都是有前綴J呢?如Button命名為JButton。事實(shí)上,在包java.awt中已經(jīng)有了名為Button類。剛引入Java的時(shí)候,和圖形相關(guān)的類在AWT包中,但AWT的組件的外觀需要調(diào)用操作系統(tǒng)的類庫(kù)來(lái)繪制,所以非常依賴底層平臺(tái),稱之為重組件。為更少地依賴底層平臺(tái),Java推出新的圖形包Swing,其組件稱為輕組件。為區(qū)別兩類組件,Swing組件類名都有前綴字母J。4GUI類繼承層次(Swing)5ContainerClassesContainer類能包含其它的GUIcomponents.6輔助類不是Component的子類,它們一般用來(lái)描述GUIcomponents類的屬性,諸如圖形環(huán)境,顏色,字體,以及大小.GUI輔助類7SwingGUIComponents8Frames(框架)框架是一個(gè)不能包含在其它窗口中的窗口。它是一個(gè)基礎(chǔ)容器類,用于在JavaGUI應(yīng)用中盛裝其它GUI組件??蚣茉赟wing中是JFrame類。9JFrameClass10CreatingFramesRunimportjavax.swing.*;publicclassMyFrame{publicstaticvoidmain(String[]args){JFrameframe=newJFrame("TestFrame");frame.setSize(400,300);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}MyFrame11ContentPaneinJDK1.5//Addabuttonintotheframeframe.getContentPane().add(newJButton("OK"));RunMyFrameWithComponentsTitlebarContentpane//Addabuttonintotheframeframe.add(newJButton("OK"));12LayoutManagers在許多窗口系統(tǒng),通過(guò)使用硬編碼的像素尺寸來(lái)安排用戶界面組件。例如,將一個(gè)按鈕入在窗口(10,10)位置處。使用硬編碼的像素尺寸,如果換一個(gè)不同分辨率的系統(tǒng),用戶界面將發(fā)生變化。.Java的布局管理器提供了一層抽象,自動(dòng)把用戶界面映射到所有的窗口系統(tǒng)。Java的GUI組件在容器中如何放置,由容器的布局管理器來(lái)安排。前面的例子中,并沒(méi)有指定OK按鈕放在框架中什么位置,但是后臺(tái)工作的布局管理器能夠?qū)⒔M件放到正確的位置。
布局管理器使用布局管理器類創(chuàng)建,每個(gè)布局管理器類都實(shí)現(xiàn)LayoutManager接口。使用setLayout(LayoutManager)方法在容器中設(shè)置布局管理器 LayoutManagerlayoutManger=newXxxLayout(); container.setLayout(layoutManger);13KindsofLayoutManagersFlowLayout(Chapter12)GridLayout(Chapter12)BorderLayout(Chapter12)其它的布局類將在第26章介紹14FlowLayout編寫程序往一個(gè)框架的內(nèi)容窗格中添加三個(gè)標(biāo)簽和三個(gè)文本框,使用FlowLayout
布局管理器。
ShowFlowLayoutRun15TheFlowLayoutClass16GridLayoutExample在前例基礎(chǔ)上使用GridLayout管理器取代FlowLayout管理器重新布局.ShowGridLayoutRun17TheGridLayoutClass18TheBorderLayoutManagerBorderLayout
管理器將容器分為5個(gè)區(qū)域:East,South,West,North,andCenter.組件使用add方法添加到指定的區(qū)域。add(Component,constraint),whereconstraintisBorderLayout.EAST,BorderLayout.SOUTH,BorderLayout.WEST,BorderLayout.NORTH,orBorderLayout.CENTER.
19BorderLayoutExampleShowBorderLayoutRun20TheBorderLayoutClass21使用Panels作子容器Panels是透明的子容器,用來(lái)對(duì)組件進(jìn)行分組放置
。一般將用戶組件放置在panels中,然后再將panels放置在框架內(nèi),甚至可將panels再放置到另外的panels中。panels直接調(diào)用add方法可將組件添加到panels。panels默認(rèn)的布局是FlowLayout22CreatingaJPanel可以調(diào)用JPanel的構(gòu)造方法newJPanel()
來(lái)創(chuàng)建默認(rèn)的FlowLayout
布局的面板,或者newJPanel(LayoutManager)
來(lái)創(chuàng)建具有指定布局管理器的面板。例如:JPanelp=newJPanel();p.add(newJButton("OK"));23TestingPanelsExample本例使用JPanel來(lái)分組不同的用戶組件TestPanelsRun24TheColorClass可以使用java.awt.Color
類為GUI組件設(shè)置顏色。顏色由紅、綠、藍(lán)三基色構(gòu)成,每種基色的強(qiáng)度都用一個(gè)無(wú)符號(hào)的byte值表示,從0(最暗)到255(最亮),這就是RGB模式??梢允褂肅olor類的構(gòu)造方法:Colorc=newColor(r,g,b);Example:Colorc=newColor(228,100,255);25標(biāo)準(zhǔn)色十三種標(biāo)準(zhǔn)色(black,blue,cyan,darkGray,gray,green,lightGray,magenta,orange,pink,red,white,yellow)在java.awt.Color類中定義為類常量。上述標(biāo)準(zhǔn)色常量名不符合Java的命名規(guī)范,所以自JDK1.4起,也定義了相同的標(biāo)準(zhǔn)色常量:BLACK,BLUE,CYAN,DARK_GRAY,GRAY,GREEN,LIGHT_GRAY,MAGENTA,ORANGE,PINK,RED,WHITE,andYELLOW.26SettingColors可以使用下列方法給組件設(shè)置背景和前景色:setBackground(Colorc)setForeground(Colorc)Example:jbt.setBackground(Color.yellow);jbt.setForeground(Color.red);27TheFontClassFontmyFont=newFont(name,style,size);Example:FontmyFont=newFont("SansSerif",Font.BOLD,16);FontmyFont=newFont("Serif",Font.BOLD+Font.ITALIC,12);JButtonjbtOK=newJButton("OK“);jbtOK.setFont(myFont);FontNames所有平臺(tái)支持的標(biāo)準(zhǔn)字體名字:SansSerif,Serif,Monospaced,Dialog,orDialogInput.FontStyleFont.PLAIN(0),Font.BOLD(1),Font.ITALIC(2),andFont.BOLD+Font.ITALIC(3)28獲得所有可用的字體名字GraphicsEnvironmente=GraphicsEnvironment.getLocalGraphicsEnvironment();String[]fontnames=e.getAvailableFontFamilyNames();for(inti=0;i<fontnames.length;i++)System.out.println(fontnames[i]);29Swing組件的一般屬性30Borders可以給JComponent
類的任何對(duì)象設(shè)置邊界。使用newTitledBorder(Stringtitle)創(chuàng)建一個(gè)帶標(biāo)題的邊界,使用newLineBorder(Colorcolor,intwidth)創(chuàng)建線邊界,width
表明線的粗細(xì).下列代碼設(shè)置面板的邊界為標(biāo)題邊界:JPanelpanel=newJPanel();panel.setBorder(newTitleBorder(“MyPanel”));31TestSwingCommonFeaturesComponentPropertiesfontbackgroundforegroundpreferredSizeminimumSizemaximumSizeJComponentPropertiestoolTipTextborderTestSwingCommonFeaturesRun32ImageIcons圖標(biāo)一般是大小固定的圖片,比較小,用來(lái)裝飾組件。圖像存儲(chǔ)在圖像文件中,Java目前支持三種圖像格式:GIF、JPEG和PNG。javax.swing.ImageIcon
類表示圖像圖標(biāo),可以用
newImageIcon(filename
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年裝修協(xié)議額外條款明細(xì)一
- 二零二五年人工智能教育合作協(xié)議3篇
- 2024年貨物供應(yīng)合同
- 2024年第三方物流運(yùn)輸服務(wù)合同模板
- 《結(jié)構(gòu)設(shè)計(jì)問(wèn)題解析》課件
- 幼兒園工作總結(jié)用心呵護(hù)每個(gè)小天使
- 餐飲行業(yè)保安工作計(jì)劃
- 汽車行業(yè)顧問(wèn)工作概述
- 手工藝品店前臺(tái)工作總結(jié)
- 2024年高標(biāo)準(zhǔn)木工模板安裝及售后保障勞務(wù)分包合同3篇
- 2024養(yǎng)老院消防設(shè)備升級(jí)與消防系統(tǒng)維護(hù)服務(wù)合同3篇
- 2024-2025學(xué)年寒假致學(xué)生家長(zhǎng)的一封信(安全版)
- 單位內(nèi)部治安保衛(wèi)制度
- 人才引進(jìn)政策購(gòu)房合同模板
- 學(xué)生宿舍消防安全制度模版(3篇)
- 四川省成都市2023-2024學(xué)年高二上學(xué)期期末調(diào)研考試語(yǔ)文試題(解析版)
- ps經(jīng)典課程-海報(bào)設(shè)計(jì)(第六講)
- 江蘇省泰州市2023-2024學(xué)年高一上學(xué)期期末語(yǔ)文試題及答案
- 【MOOC】工程制圖解讀-西安交通大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 期末復(fù)習(xí)(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)蘇教版
- 浙江省杭州市2023-2024學(xué)年高一上學(xué)期1月期末英語(yǔ)試題 含解析
評(píng)論
0/150
提交評(píng)論