<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    FORTUNE

    THE WAY TO THE MASTER...
    posts - 49, comments - 18, trackbacks - 0, articles - 1
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    SWT Layout - FormLayout

    Posted on 2006-03-09 13:51 fortune 閱讀(1817) 評(píng)論(0)  編輯  收藏 所屬分類: 我的學(xué)習(xí)筆記
    MarginWidth, MarginHeight
    離頁(yè)邊寬度和高度,與GridLayout中相似

    Display display = new Display ();
    Shell shell = new Shell (display);
    FormLayout layout= new FormLayout ();
    layout.marginHeight = 5;
    layout.marginWidth = 5;
    shell.setLayout (layout);

    FormData
    指定了每個(gè)widget在FormLayout中怎樣排列

    很典型地,一個(gè)FormData實(shí)例在一個(gè)合成器內(nèi)被幫定于各個(gè)子control。因?yàn)閷?duì)于一個(gè)表格布局其核心思想就是指明各個(gè)子control的相對(duì)位置,所以不同于其他的布局,給予各個(gè)子control提供設(shè)置用data非常重要。如果一個(gè)給定的control沒有一個(gè)FormData實(shí)例來描述它,則它會(huì)被默認(rèn)為放置于合成器的左上角,而這種位置是你極少期望的。寬度和高度屬性用象素來指明一個(gè)control的方位。頂部、底部和左右屬性較為重要,且都持有一個(gè)FormAttachment實(shí)例。這些attachment描繪了在一個(gè)合成器內(nèi)control間的關(guān)系。
    注意:如果多個(gè)widgets未指明任何attachment,他們都會(huì)在缺省值指定的位置重疊起來

    使用FormAttachment指明關(guān)系

     

    理解FormAttachment是使用表格布局的一個(gè)非常重要的方面。就像早先提起的,每一個(gè)FormAttachment實(shí)例描述了一個(gè)control某一面的位置。你可以以兩種不同的方式使用FormAttachment

     

    首先,你可以使用父合成器的百分比來指明一個(gè)FormAttachment。例如,如果一個(gè)左側(cè)的FormData被設(shè)定為50%,則control的右邊際會(huì)處于合成器的水平中央。同樣地,如果設(shè)定頂端邊界為75%control會(huì)處于合成器自上而下的四分之三處。表6.3總結(jié)了用以指定百分比的FormAttachment構(gòu)造器。以百分比的形式來指明FormAttachment是有用的,但你不能總是應(yīng)用這種方法。將你的所有control通用百分比方式作說明和用絕對(duì)的象素點(diǎn)來指明他們沒有太大的區(qū)別:因?yàn)楫?dāng)合成器被重定大小時(shí),如何快速定位每一個(gè)元素會(huì)變得相當(dāng)困難,因?yàn)?/SPAN>control并不會(huì)如你所愿地在該位置上。使用表格式布局的關(guān)鍵點(diǎn)是在于確定control間的相互位置,而這正是FormAttachement所允許的。

    基于百分比FormAttachment構(gòu)造器

    構(gòu)造器

    描述

    FormAttachment(int numerator)

    假定分母為100,意味著參數(shù)即被視為一個(gè)百分比。

    僅在SWT 3.0中可用。

    FormAttachment(int numerator, int offset)

    假定分母為100,意味著參數(shù)即被視為一個(gè)百分比。

    偏移量offset是在百分比定位的基礎(chǔ)上再行偏移的象素?cái)?shù)目。

    FormAttachment(int numerator, int denominator, int offset)

    假定分母為denominator,意味著參數(shù)即被視為一個(gè)百分比。

    偏移量offset是在百分比定位的基礎(chǔ)上再行偏移的象素?cái)?shù)目。


    FormAttachment第二系列的構(gòu)造器是基于對(duì)其他control的參照。它們常常將一個(gè)control的邊緣與相鄰的control相對(duì)定位。通過為button1設(shè)定FormData右屬性到一個(gè)基于button2而構(gòu)建的FormAttachment,你可以說button1應(yīng)該總是定位與button2的右側(cè)。將你的絕大多數(shù)control依照這種方式去定位有多種好處。你的布局代碼目的就變得很容易理解:在過去的象素或是百分壁基礎(chǔ)上的那個(gè)control與哪個(gè)control相鄰的表達(dá)方式被取代后,就變得很明顯了,例如:名為foocontrol應(yīng)該位于工具條之下;其次,表格式布局也容易維持你的這種布局意圖。無論合成器的尺寸如何大小變化,它總是能夠維持其正確的相對(duì)位置。

    FormData formData = new FormData();
    formData.top = new FormAttachment(30,70,10);
    button1.setLayoutData(formData);
    指的是加入該Composite含有70個(gè)單元?jiǎng)t該button1的頂部位于Composite從上數(shù)30個(gè)單元再加10個(gè)像素的位移


    作為指定相對(duì)位置之用的FormAttachment構(gòu)造器有若干種形式,具體總結(jié)如下

    構(gòu)造器

    描述

    FormAttachment(Control control)

    將現(xiàn)有小部件添于鄰接的control一側(cè)的參數(shù)。

    FormAttachment(Control control, int offset)

    將現(xiàn)有小部件添于鄰接的control一側(cè)的參數(shù),并且有offset數(shù)量象素的偏移量。

    FormAttachment(Control control, int offset, int alignment)

    排列alignment必須為 SWT.TOP SWT.BOTTOMSWT.LEFT SWT.RIGHTSWT.CENTER其中之一。

    將現(xiàn)有小部件添于鄰接的control一側(cè)的參數(shù),并且有offset數(shù)量象素的偏移量。


    注意:對(duì)于top和left的offset應(yīng)該為正數(shù),對(duì)于bottom和right的offset應(yīng)該為負(fù)數(shù)


    相對(duì)于另一個(gè) widget進(jìn)行定位

    FormData formData = new FormData();
    formData.top = new FormAttachment(20,0);
    button1.setLayoutData(formData); 
    FormData formData2 = new FormData();
    formData2.top = new FormAttachment(button1,10);
    button2.setLayoutData(formData2);

    上面這段代碼的意思就是首先將button1頂部放置在距離Composite頂部20%處,然后將button2的頂部放置在button1下10個(gè)像素位移處,當(dāng)窗口大小改變時(shí),button1會(huì)一直隨著改變并處于20%處,而button2也一直在button1下方10個(gè)像素處

    formData2.top = new FormAttachment(button1,0,SWT.TOP); 指定button2的頂部和button1相同也處于20%處


    FormData formData = new FormData(50,50);
    formData.top = new FormAttachment(20,0);
    button1.setLayoutData(formData);
    FormData formData2 = new FormData();
    FormData2.left = new FormAttachment(button1,5);
    formData2.top = new FormAttachment(button1,0,SWT.TOP);
    button2.setLayoutData(formData2);

    上面的代碼說明button1大小為50*50像素,距離頂部20%,button2的左邊與button1距離差5個(gè)像素,頂部與button1相同
    若將上面改為formData.top = new FormAttachment(button1,0,SWT.CENTER);則button2在button1左邊5個(gè)像素處且在垂直方向上處于button1的中間

    注意:千萬不要定義重復(fù)的attachment,如定義button2的左邊連著button1的右邊,又定義button1的右邊連著button2的左邊,這樣會(huì)導(dǎo)致未定義錯(cuò)誤,所以一定要確定你的weidget沒有重復(fù)限制他們的位置,僅定義 需要限制位置的widget



    參考:http://www.eclipse.org/articles/Understanding%20Layouts/Understanding%20Layouts.htm


















    主站蜘蛛池模板: 国产亚洲真人做受在线观看| 国产91色综合久久免费| 特黄特色大片免费| 亚洲aⅴ天堂av天堂无码麻豆 | 91短视频在线免费观看| 免费黄网站在线看| 日韩视频免费在线观看| 特级无码毛片免费视频尤物 | 亚洲精品无码中文久久字幕| 亚洲一区精彩视频| 亚洲中文字幕乱码AV波多JI| 亚洲人成色777777老人头| 亚洲sm另类一区二区三区| 男女啪啪免费体验区| 黄桃AV无码免费一区二区三区| 岛国岛国免费V片在线观看 | 亚洲精品人成网在线播放影院| 亚洲一日韩欧美中文字幕在线| 亚洲精品无码人妻无码| 亚洲精品无码成人| 四虎一区二区成人免费影院网址| 一级毛片免费在线观看网站| a级午夜毛片免费一区二区| 久久国产乱子伦精品免费一| 日韩插啊免费视频在线观看| 国产成人精品久久免费动漫| 毛片免费视频播放| 免费又黄又爽又猛的毛片| 亚洲精品少妇30p| 亚洲影视一区二区| 亚洲av日韩av永久在线观看| 一本大道一卡二大卡三卡免费| 免费播放在线日本感人片| 最好看最新的中文字幕免费| 国产一精品一AV一免费孕妇| 亚洲XX00视频| 久久亚洲精品无码AV红樱桃| 亚洲一线产品二线产品| 国产日韩精品无码区免费专区国产 | 亚洲国产精品免费在线观看| 亚洲精品乱码久久久久蜜桃|