AWT或Swing混合環(huán)境中的事務(wù)處理
1.為何要在SWT中嵌入Swing?
對于像窗口,菜單這樣的圖形界面元素來說,Swing能提供的,JFace也能提供。
但對圖形操作,如Java2D,Java3D,Batik(www.apache.org)中的SVG處理,JAI中的位圖操作等高級功能在SWT或JFace中沒有提供。SWT不能使用諸如混疊消除、透明繪制、文本旋轉(zhuǎn)等高級操作。
2.Eclipse 中,SWT EMBEDED常量使嵌入成為可能。
Composite awtContainer=new Composite(parent,SWT.EMBEDED);
java.awt.Frame myframe=SWT_AWT.new_Frame(awtContainer);
現(xiàn)在就可以隨心所欲地向Frame對象中添加AWT或Swing對象了。
3.AWT或Swing混合環(huán)境中的事務(wù)處理
用常規(guī)方法向AWT或Swing控件中添加監(jiān)聽器,對AWT事件作出響應(yīng)。
但監(jiān)聽器訪問SWT資源時必須小心,因為SWT和AWT在不同的線程中運行,這種訪問應(yīng)封裝在一個Runnable對象之中,通過合適的Display方法執(zhí)行,如syncExec(),asynExec()或timeExec().
AWT抽象窗口工具包是為頁面提供的一些控件,最初是作為Applet小應(yīng)用程序,繼承Applet類,Applet的缺省布局是 FlowLayout,(left),不支持高級控件。AWT直接調(diào)用操作系統(tǒng)的組件,AWT依賴操作系統(tǒng),組件少,組件是各個操作系統(tǒng)組件的交集,直接調(diào)用操作系統(tǒng)的本地組件,資源消耗少,適用于移動和嵌入式設(shè)備的GUI開發(fā)。java和jni混合實現(xiàn)。
Swing是繼承JApplet類,可以實現(xiàn)樹,表格,菜單欄等高級控件,Swing在AWT基礎(chǔ)上開發(fā)。Swing不直接用操作系統(tǒng)的組件,使用模擬組件,Swing組件多,內(nèi)存消耗大。Swing是純java語言實現(xiàn)的。具有很好的擴展性和靈活性,提供第三方組件,Swing擁有很好的Look And Feel支持,Swing遵循mvc模式,允許分離組件視圖和它的數(shù)據(jù)模型。
【編輯推薦】