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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!