2009-03-06 53 views
3

我想知道是否有人嘗試運行Swing組件內託管的複雜SWT UI。在Swing應用程序中運行SWT組件

我已經設法得到一個非常簡單的演示,但如果其他人嘗試過並失敗/成功做到這一點,那麼從他們的經驗中學習會很好。

因此,重申我的應用程序是一個Swing應用程序,我希望使用複雜的SWT UI組件(拖放,彈出窗口和對話框) - 任何人管理它?

回答

3

我已經使用了Swing和SWT,雖然從來沒有在同一個應用程序/項目中。

只要你不試圖在相同的窗口內混合組件,我不會看到任何理由,你不能完全分離每個使用特定的小部件組的窗口/對話框。然而,試圖在單個窗口內混合使用SWT和Swing可能永遠不會工作,或者至少會導致很多問題,因爲這兩個小部件集都依賴完全不同的繪圖/佈局方式 - Swing的所有組件都直接在Java中處理,並且與底層操作系統完全分離,而SWT明確依賴底層操作系統來完成所有(或大部分)GUI渲染。試圖混合兩者可能會導致各種問題。

當然,我會扔了一貫的「這不是一個推薦的做法」的迴應,以及:除非你心中有一個真正明確的目標在這裏,在同一個應用程序混合不同的插件集是不是一個好理念。 Swing和SWT有兩個完全不同的哲學和底層架構。事實上,SWT源於IBM/OTI不喜歡Swing採取的方法,因此選擇實施自己的小部件。通過這種與GUI小部件對比的方法,您最好選擇一個並堅持下去,而不是將兩者混合在一起。

2

混合Swing和SWT並不是最好的選擇,但是如果你沒有選擇,它並不是一個非常難以控制的野獸。試着在整個代碼中執行一些規則/標準。例如。保留Swing中的所有對話框(如果沒有理由,不要混合使用這兩個對話框),使用命名約定來區分Swing組件和SWT組件等。確保您清楚Swing和SWT的方式在開始解決任何複雜的UI問題之前,組件由OS/JVM處理。

要注意的一件事是在Swing和SWT組件之間拖放。這有點棘手,但特別是如果你開始投入自定義數據類型。

相關問題