SWT 中 Display_Composite_shell 基本關系 詳解
public class CompositeTesting
{
public CompositeTesting()
{
}
private void initShellkkk(Shell shell)
{
// 為shell設置標題
shell.setText("Welcome Demo !");
// 為shell設置 布局對象
GridLayout shellLayout = new GridLayout();
shell.setLayout(shellLayout);
// 構造一個Composite組件作為文本框和按鈕的容器
Composite panelComposite = new Composite(shell, SWT.NONE);
/**
* 在Shell中,為panelComposite 設置布局結構對象
* panelComposite_LayoutData的 GridData 隸屬于 panelComposite_Layout ? 這句話是否正確???正確!
* GridLayout和GridData沒有必然的上下文書寫順序,就是說:你先寫GridData的代碼,后寫Gridlayout的代碼也可以。
* 但是必須在Open()方法調用之前寫!
* 讓panelComposite 盡可能地占滿 shell
*/
GridData panelComposite_LayoutData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
panelComposite.setLayoutData(panelComposite_LayoutData);
/**
* 單起一個GridLayout
* 為panelComposite設置 布局對象
*/
GridLayout panelComposite_Layout = new GridLayout(); //文本框和按鈕將按這個布局顯示
panelComposite.setLayout(panelComposite_Layout);
// 為panel設置背景色
final Color pColor = new Color(Display.getCurrent(), 0, 0, 255);
panelComposite.setBackground(pColor);
// 構造文本框
final Text text = new Text(panelComposite, SWT.MULTI | SWT.WRAP);
// 為文本框設置布局結構對象
//GridData tLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true); // 讓文本框盡可能地占滿panel
GridData tLayoutData = new GridData(300, 300);
text.setLayoutData(tLayoutData);
// 構造按鈕
Button button = new Button(panelComposite, SWT.PUSH);
button.setText("確定");
// 為按鈕添加鼠標事件
button.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e)
{
// 當用戶點擊按鈕時顯示信息
text.setText("歡迎"); } });
// 當主窗口關閉時觸發DisposeListener
shell.addDisposeListener(new DisposeListener()
{
public void widgetDisposed(DisposeEvent e)
{
// 釋放panel背景色資源
pColor.dispose();
}
});
}
public static void main(String args[]) {
CompositeTesting demo = new CompositeTesting();
Display display = new Display();
Shell shell = new Shell(display);
demo.initShellkkk(shell);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}</pre>
Display:該類負責應用程序和本地操作系統間建立交互,負責與系統進行通信。應用系統創建一個display對象就夠用了,這個類繼承自Device類。
Composite:面板類,常用的容器對象,是Shell(主窗體)的父類。相當于Swing的Panel
Composite(Composite parent ,int style)
第一個參數表示該容器創建在哪個容器上。第二個參數,表示該面板的風格。選擇SWT.NONE,Composite是不顯示的,只發揮容器作用。如果你想觀察這個容器的樣子,在風格中可以選擇“凹陷”風格:SWT.BORDER
Shell:譯做“主窗體”。 “組件”要構建在容器中,“容器”要構建在主窗體中
本文由用戶 Yangcl 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!