亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

技術分析:使用Eclipse進行SWT編程(圖)

2019-11-18 13:00:51
字體:
來源:轉載
供稿:網友

  "The best way to PRedict the future is to invent it."—Alan Kay
  
  1. 為什么要使用SWT?
  
  SWT是IBM開發一套跨平臺的GUI開發框架。為什么IBM要創建另一種GUI呢?為什么他們不使用現有的java GUI框架呢?要回答這些問題,我需要回到Java的早期時代。
  
  Sun已經創建了一套跨平臺的GUI框架 AWT (Abstract Windowing Toolkit)。 這個AWT框架使用了本地窗口組件(native widgets)不過它存在LCD問題. 這個LCD問題導致了它失去主要的平臺特性。換句話說,假如平臺A有窗口組件1-40而平臺B有窗口組件20-25,那么這個跨平臺的AWT框架只能提供這兩個集合的交集。
  
  為了解決這個問題,Sun創建了一個新的框架使用模擬窗口組件(emulated widgets)來代替本地窗口組件(native widgets)。這個方法解決了LCD問題同時提供了豐富的窗口組件,不過也產生了其他的問題。例如,Swing應用程序不再和本地程序在樣子上一致。雖然JVM有了很大的改善, 但是Swing應用程序仍然存在它們本地配對物所沒有的性能問題。而且,Swing應用程序消耗了太多的內存,故不適合用于PDA和移動電話等小型設備。
  
  IBM發現這些方法都無法滿足他們的需求。因此,IBM創建了新的GUI庫叫做SWT,它解決了AWT和Swing框架中的問題。SWT框架使用JNI訪問本地窗口組件(native widgets),假如一個窗口組件在主機平臺上不能獲得,那么SWT會模擬這個不能獲取的窗口組件。
  
  2. 一個SWT應用程序的基礎材料
  
  Display, Shell和Widgets是一個SWT應用程序的基礎材料。Displays用于治理事件循環(event loops)和控制UI線程和其他線程之間的通訊。Shell是應用程序中由操作系統窗體治理器來治理的窗體。任何SWT應用程序都需要至少一個Display實例和1個或更多的Shell實例。
  
 技術分析:使用Eclipse進行SWT編程(圖)(圖一)

  圖1 說明了一個SWT應用程序的不同看法。第一幅圖是簡化的UI對象的繼續圖。第二幅圖是UI對象的包含結構。第三幅圖就是創建了的UI。
  
  假如一個應用程序使用多個線程,每個線程使用自己的Display對象實例。那么你可以通過使用靜態的Display.getCurent()方法得到當前活躍的Display對象實例。
  
  一個Shell表示一個非凡操作系統中的一個窗口。一個Shell可以最大化,正常化,和最小化。有兩種類型的shell。一種是頂層(top-level)Shell作為Display的主窗口創建的,另一種是依靠于其他shell的對話shell。
  
  Shell的類型是由傳給Shell構造函數的style位決定的。Shell的默認值是對話Shell。也就是說,假如沒有傳遞任何值給構造函數參數,那么創建的是默認的對話Shell。假如一個Display對象作為參數,那么它是頂層(top-level)Shell。
  
  有些窗口組件(widget)的屬性必須在創建時設定。這些窗口組件(widget)屬性叫做style bits。Style bits是在SWT類中定義的常量。如Button button = new Button( shell, )。當然可以通過或操作來使用多個style bit。例如,要使用一個有邊的按鈕,你需要使用SWT.PUSH SWT.BORDER作為style bit參數。
  
  3. 環境設置
  
  開發一個SWT應用程序與開發一個Swing應用程序不同。為了可以開始一個SWT應用程序的開發,你需要把SWT庫加到classpath中,同時設置好對應的必要的環境變量。
  
  第一個需要的庫是swt.jar文件,它位于ECLIPSE_HOME/eclipse/plugins/org.eclipse.swt.win32_2.1.0/ws/win32目錄。根據你使用的Eclipse版本,你可能需要使用不同的目錄。這個swt.jar文件必須加到你的classpath中,為此到Project->Properies->JavaBuildPath->Libraries->Add Variable -> Eclipse Home ->Extend并按上述路徑選擇swt.jar庫,然后單擊OK。
  
  然后,你可以編譯SWT應用程序,但是由于拋出下邊所示的運行時異常,無法運行它,因為swt.jar使用了本地庫。你需要設置java.library.path環境變量來在Java中使用本地庫。
  
 技術分析:使用Eclipse進行SWT編程(圖)(圖二)

  要設置java.library.path變量,到Run-> Run...-> Java Applicaton-> New ->Arguments -> VM Arguments。然后,如何需要,如下修改path,把它粘貼到VM Arguments部分。-Djava.library.path=c:/eclipse/plugins/org.eclipse.swt.win32_2.1.0/os/win32/x86
  
  裝載本地庫
  
  假如你需要裝載應用程序使用的任何本地庫,你可以使用Runtime.getPlatform.loadLibrary("libraryname")方法。
  
  完成這些步驟,你就可以在你的eclipse環境下運行SWT程序了。
  
  4. 你的第一個SWT應用程序
  
  創建一個典型的SWT應用程序需要一下步驟:
  
  創建一個Display
  
  創建一個或多個Shells
  
  設置Shell的Layout manager
  
  創建Shell中的widgets
  
  開啟Shell窗口
  
  寫一個事件轉發循環
  
  銷毀display
  
  你可以使用下邊的代碼模板來快速的運行本文中的代碼片斷。你可以復制粘貼這些代碼至合適的區域。如源代碼1所示:
  
技術分析:使用Eclipse進行SWT編程(圖)(圖三)

  這個例子顯示了一個空的窗口。你可以加widget到上邊的模板。任何SWT應用程序需要 一個Display和一個或多個 Shells。這個Shell是個合成對象;它可以容納其他的合成對象。假如沒有設置shell的 layout,加到Shell的widget是不能看見的。Shell窗口必須 打開才能顯示。 事件處理循環讀取并轉發GUI事件。假如沒有事件處理循環應用程序窗口是無法顯示的。即使通過open()方法來打開Shell窗口。讓后,需要在Shell被丟棄的時候銷毀 Display。
  
  導入需要的庫
  
  你可以使用Source->Organize Imports菜單或者Ctrl+Shift+O來自動導入需要的庫。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情va永久在线播放| 欧美大成色www永久网站婷| 国产日韩视频在线观看| 亚洲日本成人女熟在线观看| 97在线观看免费| 亚洲的天堂在线中文字幕| 最新国产精品拍自在线播放| 国产精品69久久| 久久免费国产视频| 最新国产精品拍自在线播放| 日韩精品一区二区三区第95| 国产综合色香蕉精品| 91成人精品网站| xvideos亚洲| 久久久精品国产网站| 国产综合色香蕉精品| 97超碰色婷婷| 欧美在线视频一区| 欧美国产在线电影| 国产国语videosex另类| 中文字幕欧美日韩va免费视频| 久久噜噜噜精品国产亚洲综合| 国产精品av网站| 91免费精品国偷自产在线| 久久久国产精彩视频美女艺术照福利| 97视频com| 亚洲视频在线观看网站| 在线观看欧美日韩国产| 91精品国产高清久久久久久久久| 亚洲三级免费看| 国产日韩欧美在线观看| 黄色一区二区在线| 日韩中文字幕在线播放| 欧美激情女人20p| 日韩精品中文字幕有码专区| 亚洲国产天堂久久综合| 亚洲视频第一页| 萌白酱国产一区二区| 亚洲的天堂在线中文字幕| 国产亚洲美女精品久久久| 精品高清一区二区三区| 北条麻妃在线一区二区| 亚洲综合最新在线| 亚洲成人久久电影| 国产成人免费av电影| 懂色aⅴ精品一区二区三区蜜月| 91精品国产91久久久久久| 国产精品1区2区在线观看| 日韩亚洲在线观看| 国产在线观看一区二区三区| 亚洲精品国产综合久久| 欧美一区视频在线| 欧洲美女7788成人免费视频| 主播福利视频一区| 国产精品视频久久久久| 亚洲精品456在线播放狼人| 日韩有码在线视频| 91久久精品美女| 久久久亚洲福利精品午夜| 亚洲国产精品va在线看黑人动漫| 亚洲精品日韩av| 日韩免费av一区二区| 在线视频精品一| 日韩经典一区二区三区| 7m第一福利500精品视频| 在线日韩第一页| 一区二区欧美久久| 中文字幕亚洲第一| 日韩中文字幕在线| 亚洲成色www8888| 亚洲电影免费观看高清完整版在线| 国产精品一区二区三区成人| 亚洲999一在线观看www| 欧美一级在线播放| 欧美日韩福利在线观看| 亚洲欧美日韩网| 亚洲欧洲国产一区| 亚洲嫩模很污视频| 69视频在线免费观看| 国产精品流白浆视频| 中文字幕在线成人| 在线播放国产一区二区三区| 精品久久久久国产| 久久综合国产精品台湾中文娱乐网| 亚洲直播在线一区| 国产精品九九九| 亚洲男人天堂视频| 成人www视频在线观看| 亚洲精品综合久久中文字幕| 欧美日韩精品在线观看| 国产精品自产拍在线观看中文| 欧美午夜精品久久久久久人妖| 91国内免费在线视频| 欧美成人精品一区二区三区| 91禁外国网站| 91亚洲一区精品| 色香阁99久久精品久久久| 6080yy精品一区二区三区| 亚洲精品自拍第一页| 日本久久亚洲电影| 91av免费观看91av精品在线| 中文字幕亚洲情99在线| 国模视频一区二区| 2019中文字幕全在线观看| 亚洲国产精久久久久久| 2019中文字幕在线免费观看| 亚洲国产另类 国产精品国产免费| 九九精品在线视频| 91免费的视频在线播放| 国产欧美精品一区二区三区-老狼| 欧美乱大交做爰xxxⅹ性3| 日韩av免费看| 国产精品中文久久久久久久| www日韩欧美| 国产精品第10页| 在线播放日韩专区| 欧美日韩激情小视频| 欧美大片在线看| 97精品视频在线| 成人久久久久爱| 国产欧美日韩精品丝袜高跟鞋| 亚洲mm色国产网站| 亚洲欧美在线看| 大伊人狠狠躁夜夜躁av一区| 欧美中文在线观看国产| 欧美日韩一区二区免费在线观看| 成人中文字幕在线观看| 5566日本婷婷色中文字幕97| 久久久久国产视频| 中文字幕日韩视频| 色综合老司机第九色激情| 国产欧美日韩专区发布| 日韩亚洲欧美中文在线| 国模精品视频一区二区| 日韩**中文字幕毛片| 久久久亚洲欧洲日产国码aⅴ| 国产视频精品免费播放| 久久精品一偷一偷国产| 国产91露脸中文字幕在线| 国产欧美一区二区三区久久| 日韩一区二区久久久| 久久精品色欧美aⅴ一区二区| 亚洲免费伊人电影在线观看av| 亚洲剧情一区二区| 国产成人精品日本亚洲| 成人激情电影一区二区| 日韩美女激情视频| 深夜精品寂寞黄网站在线观看| 久久免费国产视频| 国产精品天天狠天天看| 日韩高清有码在线| 亚洲一区亚洲二区亚洲三区| 亚洲天堂男人天堂| 黑人巨大精品欧美一区免费视频| 国产精品视频区| 岛国av一区二区| 欧美日韩国产在线看| 69av成年福利视频| 欧美日韩亚洲高清| 97视频免费在线看| 国产视频福利一区| 亚洲精品国产suv| 亚洲大胆人体视频| 欧美性猛交xxxx免费看|