国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

SWT/JFace開發(fā)指南之了解Display和Shell

2019-11-18 15:05:27
字體:
來源:轉載
供稿:網(wǎng)友

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

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

1package swtjfacesample;
2
3import org.eclipse.swt.SWT;
4import org.eclipse.swt.widgets.Display;
5import org.eclipse.swt.widgets.Shell;
6import org.eclipse.swt.widgets.Text;
7
8public 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. 創(chuàng)建一個Display對象

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

  3. 在Shell內創(chuàng)建各種部件(widget)

  4. 對各個部件進行初始化(外觀,狀態(tài)等),同時為各種部件的事件創(chuàng)建監(jiān)聽器(l5. 調用Shell對象的open()方法以顯示窗體

  6. 各種事件進行監(jiān)聽并處理,直到程序發(fā)出退出消息

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

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

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

  Display:與操作系統(tǒng)溝通的橋梁

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

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

  在前面的Hello,world!程序中,我們可以看到構建一個Display對象是和普通的java對象一樣通過構造函數(shù)實現(xiàn)的。它為實現(xiàn)圖形界面預備了最基本的條件。而在程序結束時我們必須顯式地調用dispose() 方法來釋放程序運行中所獲得的資源。一般來說,一個程序只需要一個Display對象,當然沒有人禁止你創(chuàng)建多個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有著眾多的方法,我們不可能一一介紹。在這里只挑選幾個可能會比較常用的作一些簡單介紹。

  ·setData()和getData():這一對函數(shù)答應我們?yōu)镈isplay對象設定一些數(shù)據(jù),setData()的參數(shù)中key和value類似于我們在使用Map對象中key和value的含義。

  ·getShells()得到關聯(lián)到該Display對象的所有沒有dispose的Shell對象

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

  ·readAndDispatch()得到事件并且調用對應的監(jiān)聽器進行處理
 
  ·sleep()等待事件發(fā)生

  Shell:窗口

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

  我們都知道窗口有很多種,比如窗口有可以調整大小的,有不可以的,有的沒有最大化最小化按鈕。這些窗體的特征在swt中被成為風格(style)。一個窗體的風格可以用一個整數(shù)進行定義。這些風格的定義在org.eclipse.swt.SWT中。
 
  Shell對象可用的風格包括:BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE , PLICATION_MODAL, MODELESS, PRIMARY_MODAL,S YSTEM_MODAL

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

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



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 华蓥市| 闵行区| 沙河市| 濉溪县| 武山县| 苗栗市| 化德县| 台州市| 怀仁县| 彭山县| 同仁县| 福建省| 永平县| 绥化市| 海伦市| 山丹县| 横峰县| 交口县| 革吉县| 江津市| 奉化市| 蓬溪县| 浦江县| 炎陵县| 屯门区| 诸城市| 泰宁县| 靖江市| 芦山县| 滕州市| 桦南县| 泗洪县| 彰化市| 邵阳市| 义乌市| 射洪县| 榆林市| 加查县| 饶阳县| 乌拉特中旗| 永康市|