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

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

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

    我的JAVA窩! - BlogJava

    SWT/JFace開發入門指南(二)〈轉帖〉

    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 實體。

    posted on 2006-12-08 18:13 J2S 閱讀(271) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2006年12月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲黄色免费观看| 亚洲综合色自拍一区| 亚洲国产日韩在线人成下载 | 欧洲亚洲国产精华液| 好吊妞998视频免费观看在线| 精品国产成人亚洲午夜福利| 成人无码区免费A片视频WWW| 亚洲一区二区三区不卡在线播放| 一个人在线观看视频免费| 久久综合久久综合亚洲| 日本免费一区二区三区最新| 色偷偷噜噜噜亚洲男人| yy6080久久亚洲精品| 免费夜色污私人影院网站电影| 久久精品亚洲男人的天堂| a国产成人免费视频| 久久精品国产亚洲av麻豆小说| 国产在线观看麻豆91精品免费| 亚洲精品456人成在线| 国产免费人人看大香伊| 一级午夜a毛片免费视频| 国产综合亚洲专区在线| 污视频在线免费观看| 亚洲不卡1卡2卡三卡2021麻豆| 大学生一级特黄的免费大片视频| 在线观看亚洲视频| 伊人久久综在合线亚洲91| 一级毛片不卡片免费观看| 亚洲一级免费毛片| 亚洲AV无码专区日韩| 国产麻豆成人传媒免费观看| 四虎必出精品亚洲高清| 亚洲精品无码永久在线观看| 久久久久国产免费| 亚洲日韩精品A∨片无码加勒比| 亚洲视频在线一区二区| 中文字幕亚洲免费无线观看日本 | 色吊丝最新永久免费观看网站| 在线播放免费人成视频网站| 亚洲精品国产肉丝袜久久| 日本免费一区尤物|