package com.swtjface.Ch2;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
public class HelloSWT {
public static void main (String [] args) {
Display display = new Display();
Shell shell = new Shell(display); //1.Allocation and initialization。
/*生成一個Display和Shell類的實例,GUI獲取底層平臺的資源并開辟了一個主窗口。*/
Text helloText = new Text(shell, SWT.CENTER);
helloText.setText("Hello SWT!");
helloText.pack();//2.Adding widgets to the shell
/*
在
Shell
上加入一個文本小部件。The code in this section also sets the parameters for these widgets, containers, and events to make sure they look and act as required.其中pack()方法是tell the Shell and Text components to use only as much space as they need.*/
shell.pack();
shell.open();
while (!shell.isDisposed()){
if (!display.readAndDispatch()) display.sleep();
}
display.dispose(); //3.GUI operation
/*一旦Shell的open()方法被調用,應用程序的主窗口和其子部件都會被呈現。只要Shell保持在打開狀態,Display實例就會通過它的readAndDispatch()方法來追蹤在操作系統事件隊列中的相關用戶事件。當窗口關閉時,與Display對象(包括Shell以及其子部件等)相聯系的資源就全部釋放*/
}
}
Display
類并不是可見的,但它負責監管著
GUI
的資源并管理著和操作系統的通信。它不光要關注著它自己的窗口是如何顯示、移動和重畫的,還同時要確保諸如鼠標點擊、鍵盤敲擊等事件送達widgets并去處理它們。
是任何
SWT
和
JFace
應用程序的承載著,無論你是用
SWT/JFace
開發或是單用
SWT
開發,你必須在你的程序中包含這個類的一個實例。
Display
類的主要任務就是負責將你的代碼重的
SWT
和
JFace
命令翻譯成底層的命令來調取操作系統。
這一過程包含了兩部分:
1.Display
對象構建一個代表著操作系統平臺的
OS
類的實例;這個類通過一系列被稱之為native methods的特殊
Java
程序提供了接觸計算機底層資源的途徑。2.
這個
Display
對象使用這些方法來直接指令操作系統并向應用程序傳達用戶動作。
if any features in your operating system aren’t incorporated into SWT, you can use the Java Native Interface to add them yourself.All it requires is a native Java method in the SWT package and a C function in the native graphics library that calls the operating system.
1.Display()--Allocates platform resources and creates a Display object
must be used in any SWT-based GUI.它產生一個Display類的實例并將其和GUI相聯系
2.getCurrent()--Returns the user-interface thread
must be used in any SWT-based GUI.它返回一個應用程序的主線程,用戶界面線程,通常和dispose()一起使用來結束Display的操作。
3.readAndDispatch()--Display object interprets events and passes them to receiver
enable the application to receive notifications from the operating system whenever the user takes an action associated with the GUI.
accesses the operating system’s event queue and determines whether any of the user’s actions are related to the GUI.
Using this method, the HelloSWT class knows whether the user has decided to dispose of the Shell. If so, the method returns TRUE, and the application ends. Otherwise, the Display object invokes its sleep() method, and the application continues waiting.
4.sleep()--Display object waits for events
enable the application to receive notifications from the operating system whenever the user takes an action associated with the GUI.
Shell 類
The Shell class accesses the operating system through the OS class to an extent, but only to keep track of opening, activating, maximizing, minimizing, and closing the main window.
The main function of the Shell class is to provide a common connection point for the containers, widgets, and events that need to be integrated into the GUI. Shell serves as the parent class to these components.

attached to the Display的shell--top-level shells
NOT directly attached to the Display instance的shell--secondary shell
在你的GUI之內,你可以設定shell或其他小部件的風格參數值,若是多個值則可以用“|”相連.除了提到的屬性,默認為“SHELL_TRIM”。
SHELL_TRIM--有一個標題欄(SWT.TITLE)和用戶可以最小化SWT.MIN)、最大化(SWT.MAX)、改變尺寸(SWT.RESIZE)和關閉(SWT.CLOSE)
DIALOG_TRIM--有一個標題欄、一個活動區的邊界(SWT.BORDER)和被關閉的能力
你還可以確定shell的形態,以限定用戶修改shell的modality,如A modal dialog box不能被移動或是改變尺寸,只可以使用給予的按鈕關閉或是取消。
NOT?every platform can render these properties in GUI components.
posted on 2006-03-15 13:51
JOO 閱讀(350)
評論(0) 編輯 收藏 所屬分類:
SWT & JFace IN ACTION