Java 學(xué)習(xí)

          堅持不懈,打通-->軟件—控制—機(jī)械
          posts - 5, comments - 3, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          本文譯自《 Eclipse.Building.Commercial.Quality.Plug.ins.2nd.Edition 》第四章第二節(jié),詳細(xì)解釋了 SWT 程序的語句,希望對入門者有所幫助。

          ? 本文地址:http://www.aygfsteel.com/cpenet/archive/2006/07/03/56407.html

          讓我們從簡單的 HelloWorld 應(yīng)用程序開始。

          ?一、SWT添加到工程的類路徑中

          首先建立一個java工程。在開始使用SWT之前,需要將SWT庫文件添加到工程的類路徑中。步驟如下:

          1.??? 下載SWT。在Eclipse SDK的下載頁面中,提供了獨(dú)立版本的SWT下載。找到標(biāo)有SWT Binary and Source的欄目。下載適合你操作系統(tǒng)的版本,不用解壓,直接保存到硬盤中。

          2.??? Eclipse菜單欄,選擇File-Import...打開導(dǎo)入向?qū)?

          3.??? 選擇Existing Projects into Workspace,點(diǎn)擊Next按鈕

          4.??? 選擇 Select archive file并使用 Browse...按鈕來找到你剛才下載的SWT文件。

          ?5.??? 點(diǎn)擊Finish按鈕,完成SWT導(dǎo)入。

          ?6.??? 右鍵點(diǎn)擊你建立的工程,選擇Properties 來打開Properties對話框。

          ?7.??? 選擇 Java Build Path -> Projects tab并點(diǎn)擊Add按鈕.

          ?8.??? 選擇 org.eclipse.swt工程, 點(diǎn)擊 OK,完成添加SWT庫到你的工程中(見圖1).

          {26F7CFAE-1A69-42BA-A826-4576DB987FD5}.BMP?

          ????????????????????????????? 1

          二、 SWT 代碼

          現(xiàn)在在你建立的java工程中,新建一個java文件,取名為 HelloWorld。在HelloWorld.java文件中把main()方法覆蓋為以下代碼:??

          1 ??? public ? static ? void ?main(String[]?args)?{
          2 ??????Display?display? = ? new
          ?Display();
          3 ??????Shell?shell? = ? new
          ?Shell(display);
          4 ??????shell.setText( " Hello?World "
          );
          5 ??????shell.setBounds( 100 ,? 100 ,? 200 ,? 50
          );
          6 ??????shell.setLayout( new
          ?FillLayout());
          7 ??????Label?label? = ? new
          ?Label(shell,?SWT.CENTER);
          8 ??????label.setText( " Hello?World "
          );
          9 ??????Color?red? = ? new ?Color(display,? 255 ,? 0 ,? 0
          );
          10
          ?????label.setForeground(red);
          11
          ?????shell.open();
          12 ????? while ?( !
          shell.isDisposed())?{
          13 ???????? if ?( !
          display.readAndDispatch())?display.sleep();
          14
          ?????}
          15
          ?????red.dispose();
          16
          ?????display.dispose();
          17
          ??}

          注:

          在覆蓋了上述代碼后, 選擇菜單欄中的 Source -> Organize Imports命令 (或者按Ctrl+Shift+O) 來把需要引用的SWT包導(dǎo)入到HelloWorld.java文件中

          以下是對各行代碼的詳細(xì)解釋:

          2行:每個基于SWT的應(yīng)用程序都有一個Display類的實(shí)例。用來將低層平臺和SWT進(jìn)行鏈接。除了管理SWT的事件循環(huán),還能訪問SWT需要的平臺資源。在16行,display實(shí)例將會提交給垃圾收集器。

          3行:每一個窗口都有一個Shell窗口框架,來與用戶進(jìn)行交互。Shell像所有的windows系統(tǒng)一樣來處理動作行為,并作為窗口控件的放置場所。

          4行: setText()方法設(shè)置窗口的標(biāo)題.

          5行: setBounds() 方法設(shè)置窗口的大小和放置的位置. 在這個例子中, 設(shè)置窗口為200個像素寬,50個像素高,并放在離屏幕的左上角100x100像素的位置上。

          6行: setLayout()方法 設(shè)置窗口框架的布局. FillLayout,充滿式布局管理器,使得組件大小會盡量的充滿整個容器.SWT的布局管理器會在以后詳細(xì)介紹。

          7行:在shell上新建一個簡單的label組件并居中顯示label的文本內(nèi)容。

          8行: setText() 方法 設(shè)置label的文本內(nèi)容。

          9行:創(chuàng)建一個紅色的顏色類的實(shí)例。你也可以使用以下語句獲得系統(tǒng)紅色的實(shí)例:

          Color red = display.getSystemColor(SWT.COLOR_RED);

          10行: setForeground() 方法 ?設(shè)置label的前景色

          11行:到目前為止,窗口框架還是不可見的。通過open()方法使得窗口可見。

          12行: while語句循環(huán)檢測窗口有沒有關(guān)閉。

          13行:display 控制事件的循環(huán). readAndDispatch() 方法從平臺的事件隊(duì)列中讀取事件,并分配他們到合適的處理程序(接收者)。只要隊(duì)列中一直有事件可以處理,這個方法一直返回true,當(dāng)事件隊(duì)列為空時,則返回false(因此允許用戶界面UI線程出于sleep狀態(tài)直到事件隊(duì)列不為空)

          15,16行:當(dāng)循環(huán)檢測到窗口被關(guān)閉時,需要將colordisplay和一些相關(guān)聯(lián)的平臺資源釋放。注意到系統(tǒng)顏色實(shí)例(colors)將會被提交釋放。

          二、??????????? 運(yùn)行這個例子

          通常情況下,為了啟動一個java應(yīng)用程序,會使用Run As - Java Application 命令。在這里,如此運(yùn)行將會拋出 UnsatisfiedLinkError 異常,說明沒有找到 SWT 的本地庫。如果運(yùn)行 Run As > SWT Application 命令,將會彈出 SWT 啟動配置窗口,見圖 2 ,在圖 2 中可以點(diǎn)擊 run 按鈕。

          ?{3717602A-4D02-4E2D-A913-A6BC4E1289A8}.BMP

          ??????????????????????????????? 2

          點(diǎn)擊 run ,運(yùn)行結(jié)果圖 3

          ?{978DFCF8-658E-40EC-80D4-3DD5D8FACF1F}.BMP

          ????????? 3

          (以后繼續(xù))

          主站蜘蛛池模板: 富裕县| 岑巩县| 满城县| 临沭县| 称多县| 建湖县| 玉山县| 石屏县| 高邮市| 太原市| 邵武市| 抚州市| 宁波市| 台中县| 西乡县| 曲沃县| 怀安县| 福泉市| 北票市| 邢台市| 禄丰县| 台安县| 威远县| 南开区| 顺义区| 九龙县| 虎林市| 玛曲县| 定远县| 桃源县| 满洲里市| 鄢陵县| 丰台区| 沂源县| 宜昌市| 乌鲁木齐县| 新宁县| 邛崃市| 文化| 五台县| 阜阳市|