版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Swing用戶界面組件
第9.2布局管理概述布局管理器概述
布局管理器是Java中用來控制組件排列位置的一種界面管理API。通常,組件放置在容器中,布局管理器決定容器中的組件具體放置位置和大小。
Java支持五種布局FlowLayout
流布局BorderLayout邊界布局GridLayout網(wǎng)格布局CardLayout
卡片布局Component類層次結(jié)構(gòu):ObjectComponentContainerWindowJComponentFrameDialogJFrameJDialogJPanelJTextComponentJLabelJScrollPaneJComboBoxAbstractButtonJMenuBarJTextFieldJTextAreaJMenu-ltemJToggleButtonJButton:每個(gè)容器都有一個(gè)默認(rèn)的布局管理器,但可以重新進(jìn)行設(shè)置。例如,使用下列語句:panel.setLayout(newGridLayout(4,4));這個(gè)面板將用GirdLayout類布局組件??梢酝萜髦刑砑咏M件。容器的add方法將把組件和放置的方位傳遞給布局管理器。VoidSetLayout(LayoutManagerm)為容器設(shè)置布局管理器Componentadd(Componentc)Componentadd(Componentc,Objectconstraints)1.1將組件添加到容器中,并返回組件引用。參數(shù):c要添加的組件
constraints布局管理器理解的標(biāo)示符FlowLayout()FloeLayout(intalign)FlowLayout(intalign,inthgap,intvgap)構(gòu)造一個(gè)新的FlowLayout對(duì)象。參數(shù):alignLEFT、CENTER或者RIGHT
hgap
以像素為單位的水平間距離(負(fù)值強(qiáng)行重疊) vgap
以像素為單位的垂直間距(負(fù)值強(qiáng)行重疊)
流式布局。在FlowLayout中,不必指定每個(gè)軟件的擺放位置,只要把組件加入到FlowLayout中,就會(huì)根據(jù)添加組件的順序依次擺放組件。
組件按照加入的先后順序從左向右排列,一行排滿之后就轉(zhuǎn)到下一行繼續(xù)從左向右排列,每一行中的組件都居中排列。
FlowLayout邊框布局邊框布局管理器(borderlayoutmanager)邊框布局管理器是每個(gè)JFrame的內(nèi)容窗格的默認(rèn)布局管理器。邊框布局管理器將界面分為上下左右及中間5部分,每添加一個(gè)組件就要指定組件擺放的方位。在上下左右的組件將貼邊放置,不指定擺放位置將默認(rèn)擺放在中間。如圖:構(gòu)造BorderLayout新對(duì)象BorderLayout()BorderLayout(inthgap,intvgap)參數(shù):
hgap
以像素為單位的水平間距離(負(fù)值強(qiáng)行重疊) vgap
以像素為單位的垂直間距(負(fù)值強(qiáng)行重疊)添加組件,從第一行第一列開始,然后是第一行的第二列,以此類推。panel.add(newJButton("1"));panel.add(newJButton("2"));(定義數(shù)字按鍵)GridLayout對(duì)象的定義:GridLayout(introws,intcolumn)GridLayout(introws,intcolumn,inthgap,intvgap)參數(shù):rows:網(wǎng)格行數(shù) column:網(wǎng)格列數(shù) hgap以像素為單位的水平間距離(負(fù)值強(qiáng)行重疊) vgap以像素為單位的垂直間距(負(fù)值強(qiáng)行重疊)其中參數(shù)rows,column可以為0,但不能同時(shí)為0。 BorderLayout常用方法BorderLayout常用方法返回CardLayoutCardLayout的容器可以容納多個(gè)組件,但是實(shí)際上同一時(shí)刻容器只能從這些組件中選出一個(gè)來顯示,就象一疊“撲克牌”每次只能顯示最上面的一張。CardLayout常用方法第9.6
復(fù)雜的布局管理復(fù)雜的布局管理在之前的布局管理概述中,只提到了邊框布局,流布局和網(wǎng)格布局。對(duì)于復(fù)雜的問題而言,這幾種布局顯然不夠。為啥這么麻煩?。。?!widows程序猿在widows中,布局管理不是一個(gè)太大的問題:首先可以用對(duì)話框編輯器將組件拖放到對(duì)話框的表面上。然后,再使用編輯器完成組件對(duì)齊,均衡間隔,中心定位等工作。如果正在開發(fā)一個(gè)大型項(xiàng)目,可能根本就不必?fù)?dān)心組件如何布局,技術(shù)嫻熟的用戶界面設(shè)計(jì)師會(huì)完成所有這些任務(wù)。java程序猿小樣,我來給你講講原因!自Java1.0以來,AWT就含有網(wǎng)格組布局(gridbaglayout),這種布局將組件按行和列排列。行和列的大小可以靈活改變,并且組件可以橫跨多行。這種布局管理器非常的靈活,但也非常復(fù)雜。好可怕的樣子!箱式布局(boxlayout)springlayout:虛構(gòu)的彈簧將同一容器的所有組件連接起來。Fail在2005年,NetBeans開發(fā)隊(duì)伍發(fā)明了Matisse技術(shù),這種技術(shù)將布局工具與布局管理器結(jié)合起來。用戶界面設(shè)計(jì)者可以使用工具將組件拖拽到容器中,并指出組件的排列方式。工具將設(shè)計(jì)者的意圖轉(zhuǎn)換成組布局管理器的可以理解的指令,與手工地編寫布局管理器布局管理的代碼相比,這樣做要便捷得多。做過的嘗試9.6.1網(wǎng)格組布局
網(wǎng)格組布局是所有布局管理器之母??梢詫⒕W(wǎng)格組布局看成是沒有任何限制的網(wǎng)格布局。在網(wǎng)格組布局中,行和列的尺寸可以改變、??梢詫⑾噜彽膯卧喜⒁赃m應(yīng)較大的組件(很多字處理器以及HTML都利用這個(gè)功能編輯表格:一旦需要就合并相鄰的單元格)。組件不需要填充整個(gè)單元格區(qū)域,并可以指定它們?cè)趩卧駜?nèi)的對(duì)齊方式。兩個(gè)用于指定字體外觀和大小的組合框兩個(gè)用于指選擇粗體和斜體的復(fù)選框。兩個(gè)組合框的標(biāo)簽。一個(gè)用于顯示示例字符串的文本區(qū)如何使用網(wǎng)格組管理器進(jìn)行布局?1)建立一個(gè)GridBagLayout的對(duì)象。不需要指定網(wǎng)格的行數(shù)和列數(shù)。布局管理器會(huì)根據(jù)后面所給的信息猜測(cè)出來。GridBagLayoutgb=newGridBagLayout();ContainerName.setLayout(gb);2)將GridBagLayout對(duì)象設(shè)置成組件的布局管理器。3)為每個(gè)組件建立一個(gè)GridBagLayout對(duì)象。設(shè)置GridBagLayout對(duì)象的域以便指出組件在網(wǎng)格組中的布局方案。4)最后,通過下面的調(diào)用添加組件的約束: add(component,constraints);GridBagContraints類的成員變量列表如下:1).gridx,gridy指定組件放在哪個(gè)單元中.其值應(yīng)該設(shè)為常數(shù)CridBagConstraints.RELATIVE.然后按標(biāo)準(zhǔn)順序?qū)⒔M件加入網(wǎng)格包布局.從左到右,從上到下.2).gridwidth,gridheight指定組件將占用幾行幾列3).weightx,weighty指定在一個(gè)GridBagLayout中應(yīng)如何分配空間.缺省為0.4).ipadx,ipady(內(nèi)部填充)指定組件的最小寬度和高度.可確保組件不會(huì)過分收縮.
5).fill指定在單元大于組件的情況下,組件如何填充此單元..缺省為組件大小不變.以下為靜態(tài)數(shù)據(jù)成員列表,它們是fill變量的值.GridBagConstraints.NONE不改變組件大小GridBagConstraints.HORIZONTAL增加組件寬度,使其水平填充顯示區(qū)域GridBagConstraints.VERTICAL增加組件高度,使其垂直填充顯示區(qū)域GridBagConstraints.BOTH使組件填充整個(gè)顯示區(qū)域
7)insets可以通過設(shè)置GridBagLayout的insets域在組件周圍增加附加的空白區(qū)域。通過設(shè)置inserts對(duì)象的left,top,right和bottom指定組件周圍的空間量。這被稱作外部填充。下面的策略可以讓網(wǎng)格組布局的使用相對(duì)簡(jiǎn)單一些:1)在紙上畫出組件布局草圖。2)找出一種網(wǎng)格,小組件被放置在一個(gè)單元格內(nèi),大組件將橫跨多個(gè)單元格。3)用0,1,2.......標(biāo)識(shí)網(wǎng)格的行和列。現(xiàn)在可以讀取gridx,gridy,gridwidth和gridheight的值。4)對(duì)于每個(gè)組件,需要考慮下列問題:是否需要水平或者垂直填充它所在的單元格?如果不需要,希望如何排列?這些就是fill和anchor參數(shù)的設(shè)置。5)將所有的增量設(shè)置為100.如果需要某行或某列始終保持默認(rèn)的大小,就將這行或這列中所有組件的weightx和weighty設(shè)置為0.6)編寫代碼。仔細(xì)地檢查GridBagConstraints的設(shè)置。錯(cuò)誤的約束可能會(huì)破壞整個(gè)布局。7)編譯,運(yùn)行。9.6.2組布局
GroupLayout是一個(gè)LayoutManager,它將組件按層次分組,以決定它們?cè)贑ontainer中的位置。GroupLayout主要供生成器使用,但也可以手工編碼。分組由Group類的實(shí)例來完成。GroupLayout支持兩種組。串行組(sequentialgroup)按順序一個(gè)接一個(gè)地放置其子元素。并行組(parallelgroup)能夠以四種方式對(duì)齊其子元素。
每個(gè)組可以包含任意數(shù)量的元素,其中元素有Group、component或間隙(gap)。間隙可被視為一個(gè)具有最小大小、首選大小和最大大小的不可見組件。此外,GroupLayout還支持其值取自LayoutStyle的首選間隙。
GroupLayout是一個(gè)很重要的是額布局管理器,在jdk1.6才加入,配合其它的管理器可以實(shí)現(xiàn)很好的界面。
GroupLayout必須要設(shè)置它的GroupLayout.setHorizontalGroup和GroupLayout.setVerticalGroup。有時(shí)候用戶可能不想使用任何布局管理器,而只是想把組件放在一個(gè)固定的位置上(通常稱為絕對(duì)定位)。這對(duì)于與平臺(tái)無關(guān)的應(yīng)用程序來說并不是一個(gè)好主意,但可用來快速地構(gòu)造原型。步驟:1)將布局管理器設(shè)置為null。2)將組件添加到容器中。3)指定想要放置的位置和大小。9.6.3不使用布局管理器示例代碼:frame.setLayout(null);JButtonok=newJButton("ok");frame.add(ok);ok.setBounds(10,10,30,15);原則上,可以通過自己設(shè)計(jì)LayoutManager類來實(shí)現(xiàn)特殊的布局方式。
9.6.4定制布局管理器器
定制布局管理器必須實(shí)現(xiàn)LayoutManager接口,并且需要覆蓋下面5個(gè)方法:voidaddLayoutComponent
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 兒童呼吸道合胞病毒(RSV)指南應(yīng)對(duì)指導(dǎo)
- 2025 小學(xué)四年級(jí)思想品德上冊(cè)文明上網(wǎng)承諾書課件
- 2026年劇本殺運(yùn)營(yíng)公司禮品采購管理制度
- 云浮行政管理培訓(xùn)課件
- 北京市房山區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期末生物試題(含答案)
- 生態(tài)農(nóng)業(yè)科普教育基地建設(shè)2025年項(xiàng)目技術(shù)創(chuàng)新與農(nóng)業(yè)人才培養(yǎng)計(jì)劃報(bào)告
- 2026年制造科技工業(yè)機(jī)器人報(bào)告
- 新能源汽車充電樁運(yùn)營(yíng)管理平臺(tái)2025年充電樁能源管理效率提升可行性報(bào)告
- 2026年及未來5年中國化工泵行業(yè)競(jìng)爭(zhēng)格局分析及投資戰(zhàn)略咨詢報(bào)告
- 2026年及未來5年中國馬口鐵包裝容器行業(yè)市場(chǎng)運(yùn)營(yíng)現(xiàn)狀及投資規(guī)劃研究建議報(bào)告
- 銀行安全保衛(wèi)基礎(chǔ)知識(shí)考試試題及答案
- 2025年云南中煙工業(yè)公司招聘考試考試筆試試卷【附答案】
- 肝癌課件簡(jiǎn)短
- 業(yè)務(wù)協(xié)同考核管理辦法
- 操盤手勞動(dòng)合同附加協(xié)議
- 2025年中學(xué)生守則及中學(xué)生日常行為規(guī)范
- 理解當(dāng)代中國 大學(xué)英語綜合教程1(拓展版)課件 B1U3 Into the green
- 醫(yī)藥展會(huì)活動(dòng)方案
- 【庫潤(rùn)數(shù)據(jù)】2025口服抗衰消費(fèi)者趨勢(shì)洞察報(bào)告
- 快遞車輛運(yùn)輸管理辦法
- 麻醉術(shù)后健康教育
評(píng)論
0/150
提交評(píng)論