麻豆传媒视频在线,国产91精品不卡视频,欧美jizz19性欧美,污视频网站在线观看,91涩漫在线观看,伊人发布在线,九色porny丨首页在线,福利视频一区,久久av网址,久久人人视频

當前位置:首頁 > 網(wǎng)站舊欄目 > 學習園地 > 設(shè)計軟件教程 > SWT布局深入學習

SWT布局深入學習
2010-01-14 23:11:41  作者:  來源:
以下內(nèi)容是學習"The Definitive Guide to SWT and JFace"(SWT/JFace權(quán)威指南)做的筆記

對于Window編程來說, 我們一般不會涉及到布局這個概念,因為基本上我們都是直接設(shè)置控件的大小, 位置等布局信息, 但是對于java來說就不一樣了, 它涉及到跨平臺的問題, 控件的位置和大小不是由它本身來控制的,因此我們不會看到控件有x, y, width, height等屬性,而必須通過外面LayoutData和Layout來控制控件的位置和大小,這個是使用Java進行客戶端編程必須轉(zhuǎn)變的一個觀念,當然這個也不是絕對,后面我們也會看到不使用布局的做法,但是我們一般不提倡這樣做

Layout可以理解為它是控件和其所在容器之間的一層抽象, 它決定了控件在容器中的位置, 而且它是與平臺無關(guān)的, 它會根據(jù)容器大小的變動來調(diào)整控件的尺寸.而且容器只能設(shè)置一種布局方式, 其包含的控件的布局是不依賴其他容器的

首先要介紹的是FillLayout, 它是所有布局中最簡單的一種, 使用了該布局的容器中的所有控件將以同一尺寸放在一行或者一列中, 它有一個type屬性,用來指定布局是采用列排列還行排列, type的屬性值為SWT.HORIZONTAL和SWT_VERTICAL, 默認情況下是行排列, 因為這個type是一個int常量,如果這個常量既不是水平也不是垂直的話,他們系統(tǒng)將默認是垂直排列

接下來是RowLayout,跟FillLayout比較類似,都是按行或列排列包含在容器中的控件, 唯一不同的就是不會限制所有的控件采用同一大小, 而且如果一行或一列排列不下時會自動換行或者換列, 在使用RowLayout的時候,還會用到RowData類, 容器中的控件將通過它來制定自己的大小, RowLayout將根據(jù)每個控件的RowData信息來決定控件在整個容器中放置的位置, RowData可以直接在構(gòu)造函數(shù)中通過width和height參數(shù)設(shè)置,也可以將width和height包裝成Point對象作為其構(gòu)造參數(shù)來設(shè)置其大小, RowLayout除了有一個跟FillLayout一樣的type屬性之外,還有另外幾個屬性需要介紹一下:
justify屬性為true表示位于同一列或者同一行中的控件之間的間距相等;
marginBottom(Left, Right, Top)設(shè)置邊距;
space指定間距;
wrap指定是否換行;

所有的布局都可以通過GridLayout來實現(xiàn), 它也是我們用的最多的布局, 它采用表格的形式來放置容器所包含的控件, numColumns是該布局最重要的屬性, 他決定了布局的結(jié)構(gòu), 所有的控件將從左到右被放在容器中, 它還有一些其他的屬性:
horizontal(vertical)Spacing指定相鄰單元格間距;
makeColumnsEqualWidth 是否強制同寬;
marginHeight(Width, Top, Bottom)設(shè)置指定邊距;
我們還可以結(jié)合給控件指定GridData來進行布局, 但是GridData不能在控件之間公用, 它的一些屬性必須說明:
grabExcessHorizontal(Vertical)Space為true的意思是指定控件所在單元格將獲取所在行(列)剩余的所有空間, 如果一行(列)有多個控件設(shè)定該屬性為true則只有第一個設(shè)置有效, 注意這里只的是cell并不是控件;
height(width)Hint設(shè)置控件的最小高(寬),注意這里指的是控件而不是單元格;
horizontal(vertical)Alignment:這個屬性用來設(shè)置控件在單元格中的對其方式,有BEGINNING(左對齊),CENTER(居中),END(右對齊),FILL(填滿整個單元格)幾個值;
horizontal(vertical)Indent:這個是用來水平(垂直)方向上設(shè)置控件到單元格之間的間隔;
horizontal(vertical)Span:是用來指定控件在水平(垂直)方向上所占用的單元格;
GridData還有一些常量需要解釋一下,BEGINNING,CENTER,END,FILL是用來設(shè)置對其方式的,不能作為構(gòu)造函數(shù)的style參數(shù), FILL_BOTH相當于將horizontalAlignment, verticalAlignment設(shè)置為FILL加上grabExcessHorizontalSpace和grabExcessVerticalSpace設(shè)置為true, 也就是說在構(gòu)造函數(shù)的style參數(shù)設(shè)置為該值相當于設(shè)置了4個屬性;FILL_HORIZONTAL =  (horizontalAlignment = FILL) + (grabExcessHorizontalSpace=true); FILL_VERTICAL = (verticalAlignment = FILL) + (grabExcessVerticalSpace=true); GRAB_HORIZONTAL = (grabExcessHorizontalSpace =true); GRAB_VERTICAL = (grabExcessVerticalSpace =true), 類似HORIZONTAL_ALIGN_BEGINNING這樣的從字面都可以知道意思了

FormLayout是所有布局里面最復雜的一種, 它也使用到自己的LayoutData:FormData, 另外它還會在FormData中通過使用FromAttachment來控制關(guān)聯(lián)控件的位置, FormData可以設(shè)置四個FormAttachment實例,分別表示控件的四邊與相對控件之間的位置關(guān)系, FormAttachment有以下幾個成員變量:
alignment 用來指定關(guān)聯(lián)的控件的某個邊和相對控件之間的對齊方式, 如果關(guān)聯(lián)的是上下位置,那么可以設(shè)置SWT.TOP, SWT.CENTER, SWT.BOTTOM,是左右位置可以設(shè)置SWT.LEFT, SWT.CENTER, and SWT.RIGHT, 該屬性一般在指定的相對控件不是容器的時候使用, 否則會沒有效果;
control屬性指的是相對哪個控件,默認情況下是指的關(guān)聯(lián)控件所在的容器;
denominator 是分母默認是100,這個一般不設(shè)置;
numerator是分子, 這兩個值在control是關(guān)聯(lián)對象的容器的時候才有意義, 用來指定應(yīng)用的控件到容器關(guān)聯(lián)邊在整個容器中的百分比,說白了就是相對位置;
offset是偏移量,說白了就是關(guān)聯(lián)控件與相對控件指定邊之間的絕對位置
從FormAttachment的構(gòu)造函數(shù)我們就可以看出來,一般哪些屬性是一起設(shè)置的, 比如只設(shè)置control, 同時設(shè)置control和offset, 同時設(shè)置control, offset和alignment, 只設(shè)置分母, 同時設(shè)置分母和分子, 同時設(shè)置分母分子和偏移量

StackLayout是一個用的很少的布局, 從字面意思我們可以看出來, 它是將使用該布局的容器內(nèi)的所有控件位置,大小設(shè)置為相同, 然后層疊在一起,只有位于最上面控件可見, 它使用topControl來指定哪個控件位于堆棧最上層并可見, 如果設(shè)置為null表示所有控件均不可見, 設(shè)置之后并調(diào)用容器的layout()方法才能使指定的控件可見

如何自定義布局
通過學習如何自定義布局,可以對SWT的布局實現(xiàn)做深層次的理解
自定義布局需要繼承Layout類,并實現(xiàn)compluteSize和layout方法, 關(guān)聯(lián)控件會調(diào)用compluteSize方法根據(jù)當前控件所包含子控件的大小計算出一個最小的尺寸值,返回值是Point里面的就是高寬值,就是確定要布局的容器的作用范圍,而調(diào)用layout方法則是為容器中的每一個控件通過調(diào)用其setBounds方法來設(shè)置位置和大小, 如果需要更多的信息來幫助對控件進行布局,那么可以自己頂一個類來封裝這些信息然后通過setLayoutData設(shè)置給control.

不使用布局
如果你不要面對垮平臺,以及根據(jù)布局自動調(diào)整容器中的控件,那么也可以不通過布局來確定控件的位置和大小,通過自定義我們知道,布局都是通過調(diào)用里面控件的setBounds方法來確定控件的位置的,所以我們要做的就是直接調(diào)用控件的setBunds方法而已.

安徽新華電腦學校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
相關(guān)熱詞搜索:布局 學習
日韩在线观看一区二区三区| 57pao国产一区二区| 日韩精品在线影院| 久久久精品黄色| 尹人成人综合网| 成人动漫视频在线观看| 免费在线观看一级毛片| 色综合五月天导航| 精品福利一区二区三区 | 日韩电影一区| 欧美视频在线视频精品| 午夜在线播放| 曰韩少妇与小伙激情| 成年无码av片在线| 欧美一区二区三区视频免费| 亚洲国产一区二区a毛片| 91免费国产在线观看| 日本强好片久久久久久aaa| 911精品美国片911久久久| 中文字幕伦av一区二区邻居| 一区二区导航| 99在线精品视频在线观看| 丝袜诱惑亚洲看片| 国产盗摄女厕一区二区三区| 99国产精品久久久久久久成人热| 欧美三级午夜理伦三级小说| 国产aⅴ精品一区二区四区| v片在线观看| 午夜av在线播放| 99精品在免费线中文字幕网站一区 | 日韩理论片网站| 国产成人午夜高潮毛片| 麻豆中文一区二区| 久久精品国语| 天堂成人免费av电影一区| 99精品视频网| 青青草97国产精品免费观看无弹窗版| 悠悠资源网久久精品| 久久不射中文字幕| 国产一区久久久| 亚洲日穴在线视频| 欧美色中文字幕| 久久亚洲精品一区二区| 国内精品视频在线| 日韩av电影在线免费播放| 日韩高清影视在线观看| 精品中文字幕一区二区| 成人黄色理论片| 污污网站在线看| 经典三级在线| 精品99又大又爽又硬少妇毛片| 成人久久久久久久| 日韩暖暖在线视频| 大胆人体色综合| 久久国产精品网站| 欧美性videosxxxxx| 久久这里只有精品首页| 国产精品一区二区视频| 免费日韩一区二区| 99国产精品视频免费观看| 亚洲成在人线免费| 一区二区三区动漫| 黄色免费看片| 国产精品伦理| 国产精品久久久久久av公交车| 成r视频免费观看在线播放| 欧美三级资源在线| 成人久久18免费网站麻豆| 国内精品伊人久久久久av影院 | 欧美日韩日本国产亚洲在线 | 亚洲欧洲国产精品| 亚洲精品videosex极品| 久久综合狠狠综合久久综合88 | 久久人人97超碰com| 久久精品盗摄| 日韩制服一区| 欧洲亚洲妇女av| 欧美自拍丝袜亚洲| 欧美日韩免费看| 正在播放欧美视频| 波多野结衣在线观看| 日本桃色视频| 欧美日韩成人影院| 日本不卡视频在线| 欧美一a一片一级一片| 国产精品久久久久久久久久ktv | а√中文在线8| 久久蜜桃av| 亚洲视频一区在线| 欧美精品aaa| 免费福利视频一区二区三区| 羞羞答答国产精品www一本| 亚洲va在线va天堂| 国产福利视频一区| 伊人久久大香| 国产欧美日韩在线视频| 一本大道久久加勒比香蕉| freemovies性欧美| 激情久久久久久| 一本一道久久a久久精品综合蜜臀| 国产精品v日韩精品| 国产在线不卡一区二区三区| 成人精品一区二区三区四区| 亚洲欧美另类中文字幕| 特级毛片在线| 免费在线一区观看| 亚洲精品国产精品久久清纯直播| 黄色毛片在线观看| 亚洲国产91| 欧美一二三四区在线| 国产在线观看黄| 尤物精品在线| 日韩精品中文字幕在线不卡尤物| 可以直接在线观看的av| 欧美freesex交免费视频| 色婷婷综合五月| h短视频大全在线观看| 日韩免费久久| 色天使色偷偷av一区二区| 国产九一视频| 亚洲自拍偷拍网| 欧美一区在线视频| 黄色网页在线播放| 国产原创一区二区| 精品中文字幕在线观看| 一区二区三区免费在线看| 亚洲精品免费在线播放| 成人免费高清完整版在线观看| 日韩国产一区| 制服丝袜一区二区三区| 国产视频中文字幕在线观看| 国产成人免费视频网站 | 69久久夜色精品国产69| 日韩成人在线观看视频| 一区二区三区在线观看国产| 91青娱乐在线视频| 欧美亚洲一级| 久久精品久久久久久国产 免费| 精品视频在线观看免费观看| 亚洲精品国产视频| 伊人75在线| 另类中文字幕网| 久久免费福利视频| 欧美自拍偷拍| 欧美一级高清片在线观看| av资源中文在线天堂| 久久久综合激的五月天| 成人激情电影一区二区| 亚洲九九在线| 亚洲欧美国产va在线影院| 成人一区视频| 欧美日韩国产区| 黄色网页在线看| 国产三级欧美三级日产三级99| 成片免费观看视频| 日日夜夜免费精品视频| 欧美精品福利在线| 国产韩日影视精品| 亚洲欧美在线免费| 国产精品流白浆在线观看| 欧美久久久久久蜜桃| 手机看片久久| 欧美日韩国内自拍| 成人高潮aa毛片免费| 亚洲人123区| 日本三级视频在线播放| 亚洲国产电影在线观看| 九色蝌蚪在线| 国产精品污www在线观看| 国产福利第一视频在线播放| 91免费版在线看| 在线视频1区| 久久久www成人免费无遮挡大片| 中日韩一区二区三区| 波多野结衣精品在线| 在线观看免费av网| 不卡视频一二三| 在线观看免费毛片| 久久婷婷成人综合色| 欧美欧美欧美| 国产亚洲女人久久久久毛片| jizz日韩| 一区二区三区日韩欧美精品| 日韩美女视频在线| 最近高清中文在线字幕在线观看1| 国产视频精品久久久| 久久精品色播| 日韩精品高清在线| 国产精品视屏| 精品偷拍一区二区三区在线看| 91蜜桃臀久久一区二区| 日韩欧美123| 黑人一区二区三区四区五区| 91高潮精品免费porn| 成人激情自拍| 日韩极品精品视频免费观看| 精品国产视频| 久久久久久久爱| 久久精品国产77777蜜臀| 天堂资源在线观看|