版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java桌面程序開(kāi)發(fā)
目錄第1章認(rèn)識(shí)Java桌面程序第2章開(kāi)發(fā)第一個(gè)Java桌面程序第3章事件處理機(jī)制第4章容器與布局第5章使用Swing常用組件第6章使用Swing高級(jí)組件第7章連上DB的Java桌面程序第8章
Java桌面程序?qū)嵗郝?lián)系人管理第4章容器與布局教學(xué)要求
1.掌握:Swing組件類的層次、用Swing創(chuàng)建圖形用戶界面的基本方法,JFrame、JPanel和布局管理器的基本使用方法及功能2.理解:Swing容器與布局管理器的作用、計(jì)算器的實(shí)現(xiàn)4.1 Swing組件類的層次Swing是圍繞著一個(gè)稱為JComponent的新組件構(gòu)建的,而JComponent則由AWT的容器類擴(kuò)展而來(lái)。Swing組件分為:頂層容器中間層容器基本組件Swing組件的層次結(jié)構(gòu)組件從功能可以分為:
特殊容器:在GUI上起特殊作用的中間層,如JInternalFrame、LayeredPane,JRootPane。
基本控件:實(shí)現(xiàn)人機(jī)交互的組件,如Jbutton,、ComboBox,、JList、JMenu,、JSlider,、JtextField。
不可編輯信息的顯示:向用戶顯示不可編輯信息的組件,例如JLabel、JProgressBar、ToolTip。
可編輯信息的顯示:向用戶顯示能被編輯的格式化信息的組件,如JColorChooser、JFileChoose,、JFileChooser,、Jtable,JtextArea。4.2 創(chuàng)建窗體:JFrameJFrame:Swing中用于創(chuàng)建桌面窗體的類對(duì)JFrame添加組件有兩種方式:1、用getContentPane()方法獲得JFrame的內(nèi)容面板,再對(duì)其加入組件:frame.getContentPane().add(childComponent)2、建立一個(gè)JPanel或JDesktopPane之類的中間容器,把組件添加到容器中,用setContentPane()方法把該容器置為JFrame的內(nèi)容面板:
JPanelcontentPane=newJPanel();//把其它組件添加到Jpanel中;
frame.setContentPane(contentPane);
//把contentPane對(duì)象設(shè)置成為frame的內(nèi)容面板;JFrame窗口中的各面板JFrame類的常用變量:staticintEXIT_ON_CLOSE:退出應(yīng)用程序后的默認(rèn)窗口關(guān)閉操作,用于setDefaultCloseOperation(int)方法中JFrame類的構(gòu)造方法JFrame():構(gòu)造一個(gè)初始時(shí)不可見(jiàn)的新窗體
JFrame(GraphicsConfigurationgc):以屏幕設(shè)備的指定GraphicsConfiguration和空白標(biāo)題創(chuàng)建一個(gè)窗體JFrame(Stringtitle):創(chuàng)建一個(gè)新的、初始不可見(jiàn)的、具有指定標(biāo)題的窗體JFrame(Stringtitle,GraphicsConfigurationgc):創(chuàng)建一個(gè)具有指定標(biāo)題和指定屏幕設(shè)備的
GraphicsConfiguration窗體JFrame的常用方法ContainergetContentPane():返回此窗體的容器對(duì)象
JMenuBargetJMenuBar():返回此窗體上設(shè)置的菜單欄。
JLayeredPanegetLayeredPane():返回此窗體的layeredPane對(duì)象。
voidremove(Componentcomp):從該容器中移除指定組件。
voidsetContentPane(ContainercontentPane):設(shè)置contentPane屬性。
voidsetDefaultCloseOperation(intoperation):設(shè)置用戶在此窗體上發(fā)起"close"時(shí)默認(rèn)執(zhí)行的操作。
voidsetIconImage(Imageimage):設(shè)置此frame要顯示在最小化圖標(biāo)中的圖像。
voidsetJMenuBar(JMenuBarmenubar):設(shè)置此窗體的菜單欄。
voidupdate(Graphicsg):只是調(diào)用paint(g)。示例例4-2創(chuàng)建JFrame的實(shí)例(對(duì)象)來(lái)調(diào)用JFrame的方法,以此設(shè)計(jì)界面窗口。例4-3演示了JFrame的基本使用方式,點(diǎn)擊關(guān)閉窗口按鈕采用了事件處理,利用WindowAdapter實(shí)現(xiàn)了退出程序。4.3 幫助實(shí)現(xiàn)布局的容器:JPanelJPanel是一個(gè)放置其他圖形組件(包括其它JPanel)的中間層容器,不能獨(dú)立存在,必須被添加到其他容器中(如JFrame)。JPanel是一個(gè)空白容器類,提供容納組件的空間,通常用于集成其他的若干組件,使這些組件形成一個(gè)有機(jī)的整體,再增加到別的容器上。JPanel是Swing包中一個(gè)非常重要的控件,在程序的開(kāi)發(fā)中,經(jīng)常會(huì)使用到JPanel,這樣可以大大的規(guī)范布局JPanel的構(gòu)造方法:JPanel():創(chuàng)建具有雙緩沖和流布局的新JPanel。
JPanel(booleanisDoubleBuffered):創(chuàng)建具有FlowLayout和指定緩沖策略的新JPanel。
JPanel(LayoutManagerlayout):
創(chuàng)建具有指定布局管理器的新緩沖JPanel。
JPanel(LayoutManagerlayout,booleanisDoubleBuffered):創(chuàng)建具有指定布局管理器和緩沖策略的新JPanel。JPanel類主要方法:AccessibleContextgetAccessibleContext():獲取與此JPanel關(guān)聯(lián)的AccessibleContext。
PanelUIgetUI():返回呈現(xiàn)此組件的外觀(L&F)對(duì)象。
StringgetUIClassID():返回指定呈現(xiàn)此組件的L&F類名的字符串。
protectedStringparamString():返回此JPanel的字符串表示形式。
voidsetUI(PanelUIui):設(shè)置呈現(xiàn)此組件的外觀(L&F)對(duì)象。
voidupdateUI():利用當(dāng)前外觀的值重置UI屬性。示例JPanel類具有簡(jiǎn)單容器顯示圖形的畫(huà)布的雙重功能。例4-5的小應(yīng)用程序創(chuàng)建了三個(gè)JPanel實(shí)例:一個(gè)包含“Name:”選項(xiàng)卡和文本域的控制面板、一個(gè)專門用作顯示文本和圖形的畫(huà)布的窗格,以及包含上述控制面板和畫(huà)面的第三個(gè)面板。幫助布局的JScrollPane常用的幫助布局的還有JScrollPane,Swing中的滾動(dòng)面板。JScrollPane是具有可選的垂直/水平滾動(dòng)條,可選的行/列標(biāo)題的中間層面板。JScrollPane基本上由JScrollBar、一個(gè)JViewport以及它們之間的連線組成。JViewPort主要負(fù)責(zé)顯示內(nèi)容區(qū)域的大小,形狀為一平面矩形JScrollBar主要產(chǎn)生窗口滾動(dòng)條,讓用戶可以看到更多的內(nèi)容除了滾動(dòng)條和視口之外JScrollPane的構(gòu)造方法:JScrollPane():創(chuàng)建一個(gè)空的(無(wú)視口的視圖)JScrollPane,需要時(shí)水平和垂直滾動(dòng)條都可顯示。
JScrollPane(Componentview):創(chuàng)建一個(gè)顯示指定組件內(nèi)容的JScrollPane,只要組件的內(nèi)容超過(guò)視圖大小就會(huì)顯示水平和垂直滾動(dòng)條。
JScrollPane(Componentview,intvsbPolicy,inthsbPolicy):創(chuàng)建一個(gè)JScrollPane,它將視圖組件顯示在一個(gè)視口中,視圖位置可使用一對(duì)滾動(dòng)條控制。
JScrollPane(intvsbPolicy,inthsbPolicy):創(chuàng)建一個(gè)具有指定滾動(dòng)條策略的空(無(wú)視口的視圖)JScrollPane。滾動(dòng)條顯示策略vsbPolicy和hsbPolicy的值可使用下面的靜態(tài)常量來(lái)進(jìn)行設(shè)置,它們是在接口ScrollPaneConstants中定義的:HORIZONTAL_SCROLLBAR_ALWAYS:總是顯示水平滾動(dòng)條HORIZONTAL_SCROLLBAR_NEVER:總不顯示水平滾動(dòng)條HORIZONTAL_SCROLLBAR_AS_NEEDED:必要時(shí)(顯示的組件的水平區(qū)域大于JScrollPane組件的水平區(qū)域時(shí))顯示VERTICAL_SCROLLBAR_ALWAYS:總是顯示垂直滾動(dòng)條VERTICAL_SCROLLBAR_NEVER:總不顯示垂直滾動(dòng)條VERTICAL_SCROLLBAR_AS_NEEDED:必要時(shí)(顯示的組件的垂直區(qū)域大于JScrollPane組件的垂直區(qū)域時(shí))顯示示例4.4 常用的布局管理器Java為了實(shí)現(xiàn)跨平臺(tái)的特性并且獲得動(dòng)態(tài)的布局效果,Java將容器內(nèi)的所有組件安排給一個(gè)"布局管理器"負(fù)責(zé)管理,如:排列順序,組件的大小、位置,當(dāng)窗口移動(dòng)或調(diào)整大小后組件如何變化等功能授權(quán)給對(duì)應(yīng)的容器布局管理器來(lái)管理,不同的布局管理器使用不同算法和策略,容器可以通過(guò)選擇不同的布局管理器來(lái)決定布局。4.4.1使用流式布局FlowLayoutFlowLayout是JPanel,JApplet的缺省布局管理器。其組件的放置規(guī)律是從上到下、從左到右進(jìn)行放置,如果容器足夠?qū)?,第一個(gè)組件先添加到容器中第一行的最左邊,后續(xù)的組件依次添加到上一個(gè)組件的右邊,如果當(dāng)前行已放置不下該組件,則放置到下一行的最左邊。FlowLayout的構(gòu)造方法:FlowLayout():構(gòu)造一個(gè)新的FlowLayout,它是居中對(duì)齊的,默認(rèn)的水平和垂直間隙是5個(gè)單位。
FlowLayout(intalign):構(gòu)造一個(gè)新的FlowLayout,它具有指定的對(duì)齊方式,默認(rèn)的水平和垂直間隙是5個(gè)單位。
FlowLayout(intalign,inthgap,intvgap):創(chuàng)建一個(gè)新的流布局管理器,它具有指定的對(duì)齊方式以及指定的水平和垂直間隙。FlowLayout類常用方法:voidsetAlignment(intalign):設(shè)置此布局的對(duì)齊方式。
intgetAlignment():獲得此布局的對(duì)齊方式。
voidsetHgap(inthgap):設(shè)置組件之間以及組件與Container的邊之間的水平間隙。
intgetHgap():獲得組件之間以及組件與Container的邊之間的水平間隙
voidsetVgap(intvgap):設(shè)置組件之間以及組件與Container的邊之間的水平間隙。
intgetVgap():獲得組件之間以及組件與Container的邊之間的水平間隙。
voidaddLayoutComponent(Stringname,Componentcomp):將指定的組件添加到布局中。
voidremoveLayoutComponent(Componentcomp):從布局中移除指定的組件。FlowLayout的靜態(tài)成員變量:staticintCENTER:此值指示每一行組件都應(yīng)該是居中的。
staticintLEADING:此值指示每一行組件都應(yīng)該與容器方向的開(kāi)始邊對(duì)齊,例如,對(duì)于從左到右的方向,則與左邊對(duì)齊。
staticintLEFT:此值指示每一行組件都應(yīng)該是左對(duì)齊的。
staticintRIGHT:此值指示每一行組件都應(yīng)該是右對(duì)齊的。
staticintTRAILING:此值指示每行組件都應(yīng)該與容器方向的結(jié)束邊對(duì)齊,例如,對(duì)于從左到右的方向,則與右邊對(duì)齊。設(shè)置組件的布局方式有兩種方法:一種直接在構(gòu)造方法中設(shè)置,如:JPaneljp=newJPanle(newFlowLayout(FlowLayout.LEFT));
//設(shè)置面板中組件靠左對(duì)齊一種是先實(shí)例化布局對(duì)象,再設(shè)置,如:FlowLayoutfl=newFlowLayout(FlowLayout.CENTER,20,40);jp1.setLayout(fl);jp2.setLayout(fl);示例4.4.2使用邊框布局BorderLayoutBorderLayout是JWindow,JFrame和JDialog的缺省布局管理器。BorderLayout布局管理器把容器分成5個(gè)區(qū)域:North,South,East,West和Center,每個(gè)區(qū)域只能放置一個(gè)組件。在使用BorderLayout的時(shí)候,如果容器的大小發(fā)生變化,其變化規(guī)律為:組件的相對(duì)位置不變,大小發(fā)生變化。BorderLayout的構(gòu)造方法:BorderLayout():構(gòu)造一個(gè)組件之間沒(méi)有間距的新邊框布局。
BorderLayout(inthgap,intvgap):構(gòu)造一個(gè)具有指定組件間距的邊框布局。BorderLayout的靜態(tài)成員變量:staticStringCENTER:中間區(qū)域的布局約束(容器的中央)。
staticStringEAST:東區(qū)域的布局約束(容器的右邊)。
staticStringNORTH:北區(qū)域的布局約束(容器的頂部)。
staticStringSOUTH:南區(qū)域的布局約束(容器的底部)。
staticStringWEST:西區(qū)域的布局約束(容器的左邊)。BorderLayout的常用方法:voidsetHgap(inthgap):設(shè)置組件之間的水平間距。
voidsetVgap(intvgap):設(shè)置組件之間的垂直間距。
intgetHgap():返回組件之間的水平間距。
voidremoveLayoutComponent(Componentcomp):從此邊界布局中移除指定組件。4.4.3使用網(wǎng)格布局GridLayoutGridLayout將容器劃分成若干行列的網(wǎng)格。在容器上添加組件時(shí),它們會(huì)按從左到右、從上到下的順序在網(wǎng)格中排列。在GridLayout的構(gòu)造方法里,我們需要指定希望將容器劃分成的網(wǎng)格的行、列數(shù)。GridLayout布局管理器總是忽略組件的最佳大小,所有單元的寬度是相同的,是根據(jù)單元數(shù)對(duì)可用寬度進(jìn)行平分而定的。同樣地,所有單元的高度是相同的,是根據(jù)行數(shù)對(duì)可用高度進(jìn)行平分而定的。GridLayout的構(gòu)造方法:GridLayout():創(chuàng)建具有默認(rèn)值的網(wǎng)格布局,即每個(gè)組件占據(jù)一行一列。
GridLayout(introws,intcols):創(chuàng)建具有指定行數(shù)和列數(shù)的網(wǎng)格布局。
GridLayout(introws,intcols,inthgap,intvgap):創(chuàng)建具有指定行數(shù)和列數(shù)的網(wǎng)格布局。GridLayout類常用的方法:voidsetRows(introws):將此布局中的行數(shù)設(shè)置為指定值。
intgetRows():獲取此布局中的行數(shù)。
voidsetColumns(intcols):將此布局中的列數(shù)設(shè)置為指定值。
intgetColumns():獲取此布局中的列數(shù)。
voidsetHgap(inthgap):將組件之間的水平間距設(shè)置為指定值。
intgetHgap():獲取組件之間的水平間距。
voidsetVgap(intvgap):將組件之間的垂直間距設(shè)置為指定值。
intgetVgap():獲取組件之間的垂直間距。
voidremoveLayoutComponent(Componentcomp):從布局移除指定組件。GridLayout的屬性intnumColumns:設(shè)置容器的列數(shù),組件從左到右按列放置,當(dāng)組件數(shù)大于列數(shù)時(shí),下一個(gè)組件將自動(dòng)添加新的一行。默認(rèn)值為1列。booleanmakeColumnsEqualWidth:強(qiáng)制使列都具有相同的寬度,默認(rèn)值為false。intmarginWidth:設(shè)置組件與容器邊緣的水平距離,默認(rèn)值為5。intmarginHeight:設(shè)置組件與容器邊緣的垂直距離,默認(rèn)值為5。inthorizontalSpacing:設(shè)置列與列之間的間隔,默認(rèn)值為5。intverticalSpacing:設(shè)置行與行之間的間隔,默認(rèn)值為5。4.4.4使用箱式布局BoxLayoutBoxLayout是在Swing中新增加的一種布局管理器,它允許多個(gè)組件全部垂直擺放或全部水平擺放。嵌套組合多個(gè)使用BoxLayout布局管理器的Panel,可以幫助實(shí)現(xiàn)類似GridBagLayout的功能,但卻要比直接使用GridBagLayout簡(jiǎn)單許多。BoxLayout布局管理器按照自上而下(y軸)或者從左到右(x軸)的順序布局依次加入組件。建立一個(gè)BoxLayout對(duì)象,必須指明兩個(gè)參數(shù):被布局的容器和BoxLayout的主軸。缺省情況下,組件在縱軸方向上居中對(duì)齊。BoxLayout管理器是用axis參數(shù)構(gòu)造的,該參數(shù)指定了將進(jìn)行的布局類型。有四個(gè)選擇:
X_AXIS:從左到右水平布置組件。Y_AXIS:從上到下垂直布置組件。LINE_AXIS:根據(jù)容器的ComponentOrientation屬性,按照文字在一行中的排列方式布置組件。PAGE_AXIS:根據(jù)容器的ComponentOrientation屬性,按照文本行在一頁(yè)中的排列方式布置組件。BoxLa
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒泉?jiǎng)e墅電動(dòng)卷簾施工方案
- 遼寧雕塑噴泉景觀施工方案
- 基于認(rèn)知發(fā)展理論的室內(nèi)兒童樂(lè)園設(shè)計(jì)研究
- 重氮化合物參與的X-H插入及環(huán)化反應(yīng)研究
- 鋼中碳化物氫捕獲行為與機(jī)理原位研究
- 基于蛋白質(zhì)組學(xué)探究牦牛肉和犏牛肉品質(zhì)特性差異的分子機(jī)理
- 情境教學(xué)法在高中生物學(xué)教學(xué)中的應(yīng)用研究
- 不同老化方式下皮燕麥和裸燕麥種子生理及細(xì)胞學(xué)特征研究
- 2025年度休閑漁業(yè)魚(yú)塘承包合作協(xié)議
- 二零二五年度汽車租賃公司車輛質(zhì)押融資合同
- 2024年社區(qū)警務(wù)規(guī)范考試題庫(kù)
- 2024年食用牛脂項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國(guó)戶外音箱行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 家務(wù)分工與責(zé)任保證書(shū)
- 兒童尿道黏膜脫垂介紹演示培訓(xùn)課件
- 北京地鐵13號(hào)線
- 2023山東春季高考數(shù)學(xué)真題(含答案)
- 為加入燒火佬協(xié)會(huì)致辭(7篇)
- 職業(yè)衛(wèi)生法律法規(guī)和標(biāo)準(zhǔn)培訓(xùn)課件
- 高二下學(xué)期英語(yǔ)閱讀提升練習(xí)(二)
- 民事訴訟證據(jù)清單模板
評(píng)論
0/150
提交評(píng)論