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

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

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

    posts - 28, comments - 27, trackbacks - 0, articles - 0
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    首先是一個(gè)效果圖:

    login.JPG

    為了不違反保密協(xié)議,偶在這里把logo和相關(guān)的東西都涂掉了,希望不會(huì)讓人覺(jué)得難看....

    ok,下面就開(kāi)始講述偶的coding過(guò)程:

    首先捏,Dialog是分為三部分的,Window Title Bar,Content Area和Button Bar

    這里的Window Title Bar素很難改動(dòng)滴,偶也米改....而接下來(lái)的ContentArea和ButtonBar因?yàn)樗胤殖蓛山氐危跃鸵岩粡埍尘皥D片拆成兩截,分別設(shè)置成ContentArea和ButtonBar的背景圖片鳥(niǎo)~~~
    ????protected?Control?createDialogArea(Composite?parent)?{
    ??????? Composite?composite?=?(Composite)?super.createDialogArea(parent);
    ????????composite.setBackgroundImage(backgroundImage);
    ??????? .......
    ??? }

    ??? protected?Control?createButtonBar(Composite?parent)?{
    ??????? Control?composite?
    =?super.createButtonBar(parent);
    ????????composite.setBackgroundImage(backgroundBtmImage);
    ??????? .......
    ???????
    return?composite;
    ????}

    當(dāng)然,僅僅做到這些還是遠(yuǎn)遠(yuǎn)不夠滴,不信,你看~~~

    login2.JPG

    看到效果了咩....接下來(lái)偶們要做滴就是解決掉背景的問(wèn)題,因?yàn)檫@個(gè)對(duì)話(huà)框里面沒(méi)有Table、Tree之類(lèi)的控件,于是在createDialogArea()方法中加入一行:

    composite.setBackgroundMode(SWT.INHERIT_DEFAULT);

    我們?cè)賮?lái)看看改變后的效果:

    login3.JPG

    如上圖所示,介個(gè)ContentArea的背景問(wèn)題已經(jīng)解決鳥(niǎo),下面就素重中之重滴ButtonArea鳥(niǎo)~~~讓我們打開(kāi)Dialog的源代碼,看一下createButtonBar()的部分,就可以發(fā)現(xiàn)里面有兩行:

    ????????GridData?data?=?new?GridData(GridData.HORIZONTAL_ALIGN_END
    ????????????????
    |?GridData.VERTICAL_ALIGN_CENTER);
    ????????composite.setLayoutData(data);

    介樣子怎么能行捏,偶們需要讓介個(gè)Composite填滿(mǎn)整個(gè)DialogArea,這樣子才可以顯示出整個(gè)背景圖片,所以偶們就要在重寫(xiě)后的方法中加入下面一行代碼:

    composite.setLayoutData(new?GridData(SWT.FILL,?SWT.TOP,?false,?false));

    現(xiàn)在讓偶們?cè)賮?lái)看看運(yùn)行后的結(jié)果:

    login4.JPG

    為什么會(huì)素介個(gè)樣子捏?即使素把layout改成SWT.RIGHT,也不會(huì)改變介個(gè)結(jié)果...偶快要郁悶滴抓狂鳥(niǎo).....

    經(jīng)過(guò)漫長(zhǎng)滴測(cè)試,偶終于發(fā)現(xiàn)鳥(niǎo),如果控件滴layoutData不grabExcessSpace的話(huà),那么現(xiàn)在滴DialogArea的Composite實(shí)際大小就素兩個(gè)Button加起來(lái)滴大小,所以無(wú)論如何也素不會(huì)居右對(duì)齊滴....介可怎么辦捏.....如果去重寫(xiě)createButton方法滴話(huà),那介個(gè)dialog滴代碼可就太丑陋鳥(niǎo)....

    在一個(gè)偶然滴機(jī)會(huì)下,偶終于發(fā)現(xiàn)鳥(niǎo)SWT.RIGHT_TO_LEFT !!!偶依稀見(jiàn)到鳥(niǎo)燦爛滴曙光!8過(guò)Composite的style素在創(chuàng)建時(shí)指定的,似乎米辦法在后面覆蓋,所以偶們只好整個(gè)滴把createButtonBar重寫(xiě)掉鳥(niǎo)~~~

    ????protected?Control?createButtonBar(Composite?parent)?{
    ????????Composite?composite?
    =?new?Composite(parent,?SWT.RIGHT_TO_LEFT
    ????????????????
    |?SWT.NONE);
    ????????
    //?create?a?layout?with?spacing?and?margins?appropriate?for?the?font
    ????????
    //?size.
    ????????GridLayout?layout?=?new?GridLayout();
    ????????layout.makeColumnsEqualWidth?
    =?true;
    ????????layout.marginWidth?
    =?convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    ????????layout.marginHeight?
    =?convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    ????????layout.horizontalSpacing?
    =?convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    ????????layout.verticalSpacing?
    =?convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    ????????layout.marginLeft?
    =?10;
    ????????composite.setLayout(layout);
    ????????GridData?data?
    =?new?GridData(SWT.FILL,?SWT.TOP,?false,?false);
    ????????composite.setLayoutData(data);
    ????????composite.setFont(parent.getFont());

    ????????
    //?Add?the?buttons?to?the?button?bar.
    ????????createButtonsForButtonBar(composite);
    ??????? composite.setBackgroundImage(backgroundBtmImage);
    ????????
    return?composite;
    ????}

    在上面的代碼中,偶除了對(duì)偶所提到的地方進(jìn)行了修改以外,還加上鳥(niǎo)一行: layout.marginLeft?=?10;

    介個(gè)素因?yàn)槿绻疫吘噙^(guò)小滴話(huà),背景圖片就會(huì)被覆蓋掉一些,而因?yàn)榕紓冇玫进B(niǎo)
    SWT.RIGHT_TO_LEFT,所以應(yīng)當(dāng)設(shè)置marginLeft滴值 :-)

    還有一點(diǎn)素8能忘記滴,就素要重寫(xiě)一下setButtonLayoutData(Button button)方法,因?yàn)榕紓円袯utton改成居右對(duì)齊:

    ????protected?void?setButtonLayoutData(Button?button)?{
    ????????GridData?data?
    =?new?GridData(SWT.RIGHT,?SWT.CENTER,?false,?false);
    ????????
    int?widthHint?=?convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
    ????????Point?minSize?
    =?button.computeSize(SWT.DEFAULT,?SWT.DEFAULT,?true);
    ????????data.widthHint?
    =?Math.max(widthHint,?minSize.x);
    ????????button.setLayoutData(data);
    ????}

    然后再在createButtonsForButtonBar()方法中,把創(chuàng)建按鈕的順序改變一下,偶們就可以看到最開(kāi)始滴那張美麗滴對(duì)話(huà)框鳥(niǎo)~~~雖然被偶涂改滴有些不美麗鳥(niǎo)~~~

    現(xiàn)在還有個(gè)小小滴問(wèn)題就素按鈕距離底端滴黑框太近鳥(niǎo)~~介個(gè)素因?yàn)椋閭€(gè)Composite只有一行,所以要改變按鈕距離底端滴距離,那么DialogArea滴大小就要跟著改變,而現(xiàn)在偶們滴DialogArea所需要滴背景圖片還米改好,于是只有這樣鳥(niǎo)~~~大家應(yīng)該知道在哪里設(shè)置底邊的邊距吧?就素createButtonBar方法中滴那個(gè)layout.marginHeight =xxx :)

    最后別忘了,整個(gè)對(duì)話(huà)框的高度,應(yīng)該是Window Title Bar,Content Area和Button Bar三部分滴和。

    偶已經(jīng)說(shuō)完鳥(niǎo),如果覺(jué)得偶滴介篇文章對(duì)你有些幫助的朋友,請(qǐng)去支持一下偶們美麗可愛(ài)滴靚穎同學(xué)滴新專(zhuān)輯The One吧:)多謝!

    評(píng)論

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2006-10-17 10:05 by wolfsquare
    這是在寫(xiě)技術(shù)文章,還是小學(xué)生作文?

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2006-10-17 11:43 by 小小涼粉
    偶只素想寫(xiě)滴淺顯易懂一些.....

    wolfsquare對(duì)什么地方不滿(mǎn)意?

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2006-10-17 11:45 by 小小涼粉
    偶介個(gè)米深度咩?

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2006-10-17 14:53 by nickey
    能不能說(shuō)中文?

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2006-10-17 20:05 by 慈悲魚(yú)
    覺(jué)得作者說(shuō)話(huà)怪,是不是我太老了

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2006-10-17 21:45 by 小小涼粉
    作技術(shù)的人,也要關(guān)注一下流行好不好...

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2006-10-18 14:54 by 123bingbing
    增開(kāi)7群,號(hào)碼 30440732
    8群 30756649
    9群 30178567
    10群 28694497

    我們的qq群:15096318 學(xué)習(xí)程序的都可以來(lái)

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框[未登錄](méi)  回復(fù)  更多評(píng)論   

    2008-05-05 09:52 by an
    不知所云~

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2008-05-16 17:44 by WHAPPLEKING
    實(shí)在太感謝了,要不我死也弄不出來(lái)啊

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框[未登錄](méi)  回復(fù)  更多評(píng)論   

    2008-08-21 16:49 by 路人乙
    不錯(cuò) 贊

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2008-09-28 23:02 by 桃花島主
    你的文章還是不錯(cuò)的,但通俗易懂也不是這樣寫(xiě)呀,請(qǐng)把 捏鳥(niǎo) 之類(lèi)的去掉啊,我看著頭疼,真的.我都是煞眉頭看的.因?yàn)檫@并不是網(wǎng)絡(luò)語(yǔ)言,根本就是你們地方土話(huà)啊!

    # re: [rcp系列]用RCP做出漂亮的對(duì)話(huà)框  回復(fù)  更多評(píng)論   

    2011-11-25 11:41 by shenfx
    看完我整個(gè)人都鳥(niǎo)了~

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久精品国产亚洲AV忘忧草18 | 最近中文字幕高清免费中文字幕mv| 亚洲精品第一国产综合野| 亚洲国产精品无码专区在线观看| 日韩免费高清视频网站| 麻花传媒剧在线mv免费观看| 成人无码视频97免费| 免费人成在线观看播放a| 亚洲一本一道一区二区三区| 亚洲日本乱码一区二区在线二产线| 亚洲综合熟女久久久30p| 四虎影视精品永久免费| 女人让男人免费桶爽30分钟| 人与禽交免费网站视频| 99热精品在线免费观看| 成人免费区一区二区三区 | 全免费一级午夜毛片| 精品国产免费人成电影在线观看| 亚洲免费人成在线视频观看 | 亚洲精品综合久久| 免费va在线观看| 日韩成人免费在线| 国产又黄又爽又猛的免费视频播放| 中文字幕无码不卡免费视频| 免费看男女下面日出水来| 18女人腿打开无遮掩免费| 日韩午夜理论免费TV影院| 99久在线国内在线播放免费观看| 免费国产叼嘿视频大全网站 | 久久久久久久尹人综合网亚洲 | 国产精品免费看久久久香蕉| 日韩在线视频免费| 午夜不卡AV免费| 一级做a爱过程免费视频高清| 无码免费又爽又高潮喷水的视频| 又长又大又粗又硬3p免费视频| 日亚毛片免费乱码不卡一区 | 亚洲片一区二区三区| 国产美女亚洲精品久久久综合| 亚洲色欲久久久综合网| 亚洲线精品一区二区三区 |