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

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

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

    The Spark of Thinking

    Focus on Eclipse Tools.

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      3 隨筆 :: 27 文章 :: 4 評論 :: 0 Trackbacks

    Hello, world! 開始了解 Display Shell

    在這一節中,我們從前面所列舉出來的 Hello, world! 程序開始對 swt 進行一些初步的探索。所謂的初步是指,我們會介紹編寫 swt 程序的基本思路,以及對兩個重要的類 :Display Shell 作一些介紹。

    因為這一節和前一節是分成兩個部分貼出來的,所以我仍然將 Hello, world! 的代碼段在下面列出來:

    ?1 package?swtjfacesample;
    ?2
    ?3 import?org.eclipse.swt.SWT;
    ?4 import?org.eclipse.swt.widgets.Display;
    ?5 import?org.eclipse.swt.widgets.Shell;
    ?6 import?org.eclipse.swt.widgets.Text;
    ?7
    ?8 public ? class ?HelloSwt? {
    ?9 ???? /* *
    10 ?????*?Hello,world!
    11 ?????*?
    12 ?????*?@param?args
    13 ????? */

    14 ??????? public ? static ? void ?main(String[]?args)? {
    15 ????????Display?display? = ? new ?Display();
    16 ????????Shell?shell? = ? new ?Shell(display);
    17 ????????
    18 ????????Text?helloText? = ? new ?Text(shell,?SWT.CENTER);
    19 ????????helloText.setText( " Hello,World! " );
    20 ????????helloText.pack();
    21 ????????
    22 ????????shell.pack();
    23 ????????shell.open();
    24
    25 ???????? while ?( ! shell.isDisposed())? {
    26 ???????????? if ?( ! display.readAndDispatch())? {
    27 ????????????????display.sleep();
    28 ????????????}

    29 ????????}

    30 ????????display.dispose();
    31
    32 ????}

    33 }


    代碼段 2

    這段程序雖然很簡單,但是它反映了我們書寫 swt 程序的步驟,這些步驟是:

    1. ????? 創建一個 Display 對象

    2. ????? 創建一個或者多個 Shell 對象,你可以認為 Shell 代表了程序的窗口。

    3. ????? Shell 內創建各種部件( widget

    4. ????? 對各個部件進行初始化(外觀,狀態等),同時為各種部件的事件創建監聽器( listener

    5. ????? 調用 Shell 對象的 open() 方法以顯示窗體

    6. ????? 各種事件進行監聽并處理,直到程序發出退出消息

    7. ????? 調用 Display 對象的 dispose() 方法以結束程序。

    ?

    ?

    ?

    Hello,world! 程序中,為了讓程序更加簡單,我們沒有創建事件監聽器,在以后的內容中會進行專門介紹。

    現在讓我們稍微深入一些,看一下這些 Display,Shell 有什么作用以至于我們每個程序都必須有它們存在。

    Display: 與操作系統溝通的橋梁

    我們在前面說過,每個 swt 程序在最開始都必須創建一個 Display 對象。 Display 對象起什么作用呢?它是 swt 與操作系統溝通的一座橋梁。它負責 swt 和操作系統之間的通信。它將 swt/JFace 的各種調用轉化為系統的底層調用,控制操作系統為 swt 分配的資源。同時我們也可以通過 Display 對象得到操作系統的一些信息。

    Display 是一個 幕后工作者 ,它為 swt/JFace 提供支持,但是你并不能夠從某個用戶界面中看到它的影子。

    在前面的 Hello,world! 程序中,我們可以看到構建一個 Display 對象是和普通的 Java 對象一樣通過構造函數實現的。它為實現圖形界面準備了最基本的條件。而在程序結束時我們必須顯式地調用 dispose() 方法來釋放程序運行中所獲得的資源。一般來說,一個程序只需要一個 Display 對象,當然沒有人禁止你創建多個 Display 對象。但是在 swt javadoc 中,我們可以看到關于這個問題一些描述:

    “Applications which are built with SWT will almost always require only a single display. In particular, some platforms which SWT supports will not allow more than one active display. In other words, some platforms do not support creating a new display if one already exists that has not been sent the dispose() message.”

    Display 有著眾多的方法,我們不可能一一介紹。在這里只挑選幾個可能會比較常用的作一些簡單介紹。

    l ???????? setData() getData() :這一對函數允許我們為 Display 對象設定一些數據, setData() 的參數中 key value 類似于我們在使用 Map 對象中 key value 的含義。

    l ???????? getShells() 得到關聯到該 Display 對象的所有沒有 dispose Shell 對象

    l ???????? getCurrent() 得到與用戶交互的當前線程

    l ???????? readAndDispatch() 得到事件并且調用對應的監聽器進行處理

    l ???????? sleep() 等待事件發生

    Shell: 窗口

    一個 Shell 對象就是一個窗口。你可以在上面放置各種部件創建豐富的圖形界面。

    我們都知道窗口有很多種,比如窗口有可以調整大小的,有不可以的,有的沒有最大化最小化按鈕。這些窗體的特征在 swt 中被成為風格( style )。一個窗體的風格可以用一個整數進行定義。這些風格的定義在 org.eclipse.swt.SWT 中。

    Shell 對象可用的風格包括: BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE , PLICATION_MODAL, MODELESS, PRIMARY_MODAL, S YSTEM_MODAL

    這些風格我們不作一一介紹,你可以從他們字面意義看出一些含義來,當然也可以參考對應的 javadoc 。

    我們可以在一個 Shell 的構造函數中定義它的風格,比如在前面的 Hello,world! 程序中,我們可以這樣定義 Shell ?

    Shell?shell? = ? new ?Shell(display,SWT.CLOSE? | ?SWT.SYSTEM_MODAL);

    ? ?

    最后得到的窗體沒有最大化和最小化按鈕,并且大小是固定不變的。

    因為 swt 運行于各種平臺之上,而這些平臺上的窗口管理器千差萬別,所以所有這些風格都不是肯定可以實現的。在 swt javadoc 中,這被稱為暗示( hints )。

    Shell 對象的方法大都和 GUI 有關,比如 setEnabled() 設定了窗體是否能夠和用戶進行交互, setVisble() 設定了窗體是否可見, setActive() 將窗體設為當前的活動窗口。

    我們可以用 open() 方法打開一個窗體, close() 方法關閉一個窗體。

    小結

    本節討論了 Display Shell 的一些概念,這是我們以后進一步了解 swt 的基礎。在下一節中,我將介紹各種部件( widget )的用法,所謂部件,是指文本框,標簽等 UI 實體。



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=368099

    posted on 2006-07-20 17:32 The Spark of Thinking 閱讀(216) 評論(0)  編輯  收藏 所屬分類: SWT/JFace
    主站蜘蛛池模板: 99久久免费国产精品热| 国产亚洲精品美女久久久久 | 久久精品国产亚洲综合色| 美女免费精品高清毛片在线视| 免费观看的毛片手机视频| 亚洲va在线va天堂成人| 午夜老司机免费视频| 亚洲av乱码一区二区三区按摩 | a级亚洲片精品久久久久久久 | 一级做a爰片性色毛片免费网站| 亚洲三级视频在线| 亚洲成AV人片在WWW色猫咪| 亚洲激情电影在线| 91精品国产免费久久久久久青草| 在线观看亚洲AV日韩A∨| 国产精品深夜福利免费观看| 国产精品亚洲专区在线播放| MM131亚洲国产美女久久| 国产午夜无码精品免费看动漫| 久久久久亚洲AV无码永不| 永久免费AV无码国产网站| 精品久久久久久亚洲综合网| 国产精品亚洲二区在线观看| 久久久久免费看黄a级试看| 亚洲成综合人影院在院播放| 日本特黄特黄刺激大片免费| 一个人看的www免费高清| 亚洲AV电影院在线观看| 噼里啪啦电影在线观看免费高清 | 青苹果乐园免费高清在线| 麻豆一区二区三区蜜桃免费| 亚洲国产综合无码一区| 中文字幕av无码无卡免费| 免费人成在线观看播放a| 亚洲影院在线观看| 日韩免费毛片视频| 一级毛片aaaaaa免费看| 菠萝菠萝蜜在线免费视频| 亚洲视频免费播放| 亚洲国产精品尤物YW在线观看| 中文字幕在线观看免费视频 |