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

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

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

    幻境
    We are extremely fortunate not to know precisely the kind of world we live in
    posts - 22,comments - 39,trackbacks - 0

    初步體驗(yàn)widget

    大家好,五一已經(jīng)過去了,你們玩得開心么?

    在前面的兩篇文章中,我向大家介紹了swt的一些基本知識(shí),現(xiàn)在讓我們繼續(xù)下去討論一下swt中的widget相關(guān)的一些知識(shí)以及介紹幾種最為簡單的widget

    WidgetControl開始

    WidgetControl的父類,而Control是我們使用的大多數(shù)部件的父類。我們在以前的一些編程語言中可能接觸過控件或者組件之類的概念,部件(widget)的概念大體和這些相當(dāng)。

    org.eclipse.swt.widgets中定義了眾多的widget,甚至我們前面介紹的Shell也被當(dāng)成widget的一種。

    因?yàn)榭捎玫?/SPAN>widget如此之多,所以我大概沒有辦法全部一一介紹。在這一節(jié)中,我會(huì)介紹幾種常用的widget。相信善于觸類旁通的你通過這些極為簡略的介紹應(yīng)該可以開始使用各種widget,在使用中不斷完善自己的認(rèn)識(shí)。

    首先我們來介紹Widget。它是一個(gè)抽象類,也是所有widget的父類。通過介紹這個(gè)類,我們可以得出這所有widget的一些共有特性。

    Widget的方法中dispose()方法我們在以前曾經(jīng)見到過,調(diào)用這個(gè)方法時(shí)候,所謂的接收者(receiver,譬如我們這樣寫:awidget.dispose(),那么awidget就是接收者,而這句話所處的對(duì)象成為調(diào)用者或者caller)和接收者中所包含的其他widget會(huì)釋放它們所占用底層操作系統(tǒng)的資源。這也就是說你不必顯式地為程序中創(chuàng)建的每個(gè)widget進(jìn)行dispose()調(diào)用,而只需要確保最外層的widget(比如Display)進(jìn)行了dispose()就可以了。

    另外還可以通過isDisposed()判斷是否該widget(接收者)已經(jīng)進(jìn)行了dispose

    Widget中的getStyle()方法得到widget的風(fēng)格,而getDisplay()得到所處的Display對(duì)象。

    此外Widget中還有兩個(gè)重要方法getData()setData(),這兩個(gè)方法允許我們?yōu)橐粋€(gè)widget附加其他的信息。特別是在你需要跨模塊傳遞widget的時(shí)候,這個(gè)功能顯得非常有用。比如如果一個(gè)文本框中顯示了一段文章中的某句話,如果我們同時(shí)希望把這整篇文章的題目和作者附加上的話可以這樣寫:

    1atext.setData("title","I Have A Dream");
    2atext.setData("author","Martin Luther King");


    代碼段 3

    在程序的其他部分可以用atext.getData(“title”)得到這篇文章的題目,或者用atext.getData("author")得到作者。

    在前面我們提到過,Control是今后我們所使用大部分widget的父類。在這里我不單獨(dú)進(jìn)行介紹,而是在后面的部分中介紹。

    創(chuàng)建部件

    和創(chuàng)建其他java object一樣,我們通過使用new操作符創(chuàng)建部件的實(shí)例。有一點(diǎn)比較特殊的可能你需要使用帶參數(shù)的構(gòu)造函數(shù)進(jìn)行new操作。類似下面的程序:

     

    Text text=new Text(shell,SWT.CENTER);

    這種方法適用于幾乎所有的widget,其中第一個(gè)參數(shù)是父widget,也就是指明了該widget需要被放置道另外哪一個(gè)widget之中,而第二個(gè)參數(shù)是這個(gè)widget的風(fēng)格。

    大小和位置

    僅僅創(chuàng)建一個(gè)部件并不足以讓你看到它,因?yàn)橐粋€(gè)部件初始的長和寬都是0。你還需要設(shè)定它的大小。你可以用setSize()或者setBounds()方法手動(dòng)設(shè)定部件的大小,也可以讓系統(tǒng)自動(dòng)調(diào)整部件的大小到一個(gè)合適的值,這個(gè)值也被成為首選尺寸(preferred size)。

    可以通過調(diào)用pack()方法讓系統(tǒng)調(diào)整控件大小。如果你希望系統(tǒng)自動(dòng)調(diào)整,那么你需要首先設(shè)定控件需要表達(dá)的內(nèi)容。舉個(gè)例子來說,如果你的部件是一個(gè)文本框或者標(biāo)簽,你應(yīng)該首先設(shè)定它所要顯示的文本,這樣系統(tǒng)可以通過文本的長度計(jì)算。

    對(duì)于部件的位置,同樣可以使用setLocation()或者setBounds()進(jìn)行設(shè)定。

    這里值得一提的是所謂的bounds,其實(shí)bounds可以看成是大小和尺寸的綜合。比如setBounds(int x, int y,int width,int height)的參數(shù)中,xy描述的是位置信息,而widthheight描述了大小。

    隱藏與失效

    通過部件的setVisible方法可以控制部件進(jìn)行隱藏或是顯示。通過setEnabled方法可以控制部件是否有效。一個(gè)無效的部件不會(huì)對(duì)用戶的任何動(dòng)作作出響應(yīng)。這兩個(gè)方法的參數(shù)都是布爾型的。

    提示文本

    可以通過setToolTipText()方法設(shè)定部件的提示文本。

    幾種常用的部件

    Label

    標(biāo)簽用來顯示靜態(tài)的文本或者圖像。關(guān)于圖像和色彩我會(huì)在后面的部分進(jìn)行介紹。

    標(biāo)簽可以使用SWT.CENTER, SWT.LEFT, SWT.RIGHT中的一種指明文本的對(duì)齊方式(居中對(duì)齊,左對(duì)齊,右對(duì)齊)。

    你也可以通過設(shè)置標(biāo)簽屬性為SWT. SEPARATOR 使標(biāo)簽成為一條分隔符。

    下面這個(gè)程序給出了標(biāo)簽的兩種表現(xiàn)形式,其中使用了Layout,關(guān)于Layout的詳細(xì)情況也會(huì)在后面的部分進(jìn)行介紹:

     1public class Labels {
     2  
     3    public static void main(String[] args) {
     4        Display display = new Display();
     5        Shell shell = new Shell(display,SWT.SHELL_TRIM);
     6        RowLayout layout=new RowLayout(SWT.VERTICAL);
     7        shell.setLayout(layout);
     8        shell.setText("Labels");
     9        Label label1=new Label(shell,SWT.CENTER);
    10        label1.setText("Label Demo");
    11        Label label2=new Label(shell,SWT.SEPARATOR | SWT.HORIZONTAL);
    12        shell.setSize(100,100);
    13        shell.open();
    14
    15        while (!shell.isDisposed()) {
    16            if (!display.readAndDispatch()) {
    17                display.sleep();
    18            }

    19        }

    20        display.dispose();
    21    }

    22}

    23


    代碼段 4

    最后得到的效果可以參照下圖:

    o_labels.JPG
    4

    Text

    Text就是最簡單的文本框,與標(biāo)簽一樣,我們可以通過設(shè)定它的風(fēng)格來表示它的對(duì)齊方式(SWT.CENTERSWT.LEFTSWT.RIGHT),另外還有其他一些用于文本支持的方法,比如insert()paster()copy()setSelection()selectAll()等,這些方法在后面介紹swt事件模式會(huì)進(jìn)行更詳細(xì)的介紹。

    Button

    swt中,Button并不僅僅是按鈕。構(gòu)造時(shí)候定義的風(fēng)格不同,所體現(xiàn)出的外觀也不一樣。

    如果風(fēng)格定義成SWT.PUSH,它就是一個(gè)普通的按鈕。

    如果定義為SWT.TOGGLE,它在被按下以后會(huì)保持按下的形狀(而不會(huì)彈起來),直到鼠標(biāo)再次在上面按一下才會(huì)回復(fù)彈起的形狀。

    如果風(fēng)格定義為SWT.ARROW,它是一個(gè)帶箭頭的按鈕,箭頭的指向可以選擇SWT.LEFTSWT.RIGHTSWT.UPSWT.DOWN中的一個(gè)。

    如果定義為SWT.CHECK,它是一個(gè)復(fù)選框。

    如果定義為SWT.RADIO,它是一個(gè)單選框。

    下面一段程序演示了各種不同的Button

     1public class Buttons {
     2
     3        public static void main(String[] args) {
     4            Display display = new Display();
     5            Shell shell = new Shell(display,SWT.SHELL_TRIM);
     6            RowLayout layout=new RowLayout(SWT.VERTICAL);
     7            shell.setLayout(layout);
     8            shell.setText("Buttons");
     9            
    10            Button pushbutton=new Button(shell,SWT.PUSH | SWT.CENTER);
    11            pushbutton.setText("SWT.PUSH");
    12
    13            Button togglebutton=new Button(shell,SWT.TOGGLE | SWT.LEFT);
    14            togglebutton.setText("SWT.TOGGLE");
    15            togglebutton.setSelection(true);
    16            
    17            Button arrowbutton=new Button(shell,SWT.ARROW | SWT.LEFT);
    18            
    19            
    20            Button checkbox=new Button(shell,SWT.CHECK);
    21            checkbox.setText("SWT.CHECK");
    22          
    23            Button radio=new Button(shell,SWT.RADIO);
    24            radio.setText("SWT.RADIO");
    25            radio.setSelection(true);
    26            
    27            shell.pack();
    28            shell.open();
    29
    30            while (!shell.isDisposed()) {
    31                if (!display.readAndDispatch()) {
    32                    display.sleep();
    33                }

    34            }

    35            display.dispose();    
    36    }

    37}


    代碼段 5

    最后得到的窗口如下圖:

    o_buttons.JPG
    5

    小結(jié)

    在這一節(jié)中我向大家介紹了widget的一些基本知識(shí),還有幾種簡單的widget。你可能注意到這些描述僅僅限于外觀方面,如何讓widget和用戶交互起來呢?這需要我們處理各種用戶事件,在下一節(jié)中我會(huì)向大家介紹swt的事件模式。

    posted on 2005-05-19 17:33 閱讀(5666) 評(píng)論(5)  編輯  收藏 所屬分類: 編程相關(guān)

    FeedBack:
    # re: SWT/Jface開發(fā)入門指南(三)
    2006-09-01 16:59 | javaEveryDay
    飽覽了幾篇文章,學(xué)到很多東西,多謝了。  回復(fù)  更多評(píng)論
      
    # re: SWT/Jface開發(fā)入門指南(三)
    2011-04-13 22:30 | dad
    中文最好的入門系列!! 強(qiáng)烈支持!  回復(fù)  更多評(píng)論
      
    # re: SWT/Jface開發(fā)入門指南(三)
    2011-04-13 22:44 | dad
    第一天來博主這里看帖子, 就發(fā)現(xiàn)博主轉(zhuǎn)行了!
    沖著博主認(rèn)真寫文章的態(tài)度, 我只能用唏噓這個(gè)詞來表達(dá)了!  回復(fù)  更多評(píng)論
      
    # re: SWT/Jface開發(fā)入門指南(三) [未登錄]
    2012-04-17 16:03 | Ken
    感謝您的文章 :)  回復(fù)  更多評(píng)論
      
    # re: SWT/Jface開發(fā)入門指南(三) [未登錄]
    2014-11-09 09:38 | harry
    主站蜘蛛池模板: 99免费在线观看视频| 中文字幕看片在线a免费| jizzjizz亚洲日本少妇| 边摸边吃奶边做爽免费视频99| 一级成人a做片免费| 国产无遮挡无码视频免费软件 | 亚洲免费闲人蜜桃| 国外成人免费高清激情视频 | 日本免费的一级v一片| 亚洲精品亚洲人成在线观看下载| 久久精品国产亚洲综合色| 亚洲精品午夜久久久伊人| 亚洲1区2区3区精华液| 国产精品黄页免费高清在线观看| 十八禁无码免费网站| 影音先锋在线免费观看| 在线日韩日本国产亚洲| 亚洲精品午夜视频| 视频一区在线免费观看| 午夜精品射精入后重之免费观看| 成年女人18级毛片毛片免费| 相泽亚洲一区中文字幕| 亚洲伊人色一综合网| 色爽黄1000部免费软件下载| 毛片无码免费无码播放| 日韩免费a级在线观看| 亚洲国产第一页www| 色偷偷亚洲第一综合网| 一级毛片**不卡免费播| 日本无吗免费一二区| 亚洲电影中文字幕| 疯狂做受xxxx高潮视频免费| 麻花传媒剧在线mv免费观看| xvideos亚洲永久网址| 亚洲视频免费在线播放| 免费高清A级毛片在线播放| 37pao成人国产永久免费视频| 免费v片在线观看品善网| 亚洲成aⅴ人在线观看| aa级毛片毛片免费观看久| 无码视频免费一区二三区|