經驗分享:開發SWT應用兩點心得

 

經驗分享:開發SWT應用兩點心得


原來沒有用過Java做圖形界面的客戶端程序, 只是知道簡單的一些Java圖形編程的原理. 近日一用, 還確實和Window下的其他開發方法方法大有不同. 我沒有用過AWT, 也沒用過SWING, 在網上看到這不好,那不行. 遂直接用SWT, 反正也能跨平臺.

1. Composite
刷新
本來這看起來很簡單, 但在composite.open(), 動態創建了幾個Control, 運行起來就是不能顯示, 反而原有的control可以dispose(). 納悶, 想不通. 記得在考SCJP, AWT還是SWING需要調用redraw()重新更新畫布, 調用之, 還是無效。

在網上也找不到動態創建控件的資源, 以爲SWT不支持動態創建, 剛想~!@#$%^&*()_+. 絕望中看SWT_Example, 發現裏面的LayoutExample居然實現了動態創建Button, 這不是俺要的嗎? 將代碼研讀一遍, 看看createDetailXXX, 沒有特殊的地方, 出去再看看調用, 使用了composite.layout(true) 方法. 回頭一試, 果然就是它.

回頭一想, 可能設計者不想讓我們看到控件一個個的跳出來, 於是設計了這麼一個方法, 讓控件一次刷屏.

2. Control
父組件
Window
程序動態創建一個控件時, 可以指定父控件爲Null, 再調用父組件的add方法就可以加入到組件樹中. SWT似乎不能支持, 如果指定控件的CompositeNull, 將拋出異常. 必須指定一個父容器. 似乎不管3*7=21, shell作爲其parent, 然後調用composite.setParent()改變其parent, 想一想, 不行. 如果使用setParent方法改變, shellcontrol列表同樣保留這個控件的拷貝, 而在dispose()時總有不乾淨的乾淨的感覺.

原來搭好的框架, 因爲必須指定parent composite而放棄.

參考http://wenku.it168.com/d_000070722.shtml

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章