2010-04-20 93 views
4

我正在創建一個獨立的SWT桌面應用程序,它有大約10個不同的屏幕(很少的嚮導,幫助,表單等)。屏幕上的一些元素根本不會改變(如標題,背景等),並且工作區域根據點擊的內容而發生變化等。在SWT中管理應用程序屏幕的最佳方式是什麼?

管理應用程序屏幕的最佳方式是什麼?我是否需要在啓動時創建所有屏幕,然後根據點擊的內容顯示/隱藏它們?或者我需要動態創建這些屏幕?

此外,我找不到任何方式來顯示/隱藏Composite,我需要dispose它,然後再次創建?

最佳做法是什麼?我是SWT在Eclipse之外開發的新手,所以任何幫助都是有益的。

回答

5

決定是預先創建屏幕還是首次創建屏幕時需要根據應用程序進行決定。如果所有屏幕都需要在特定的應用程序運行時使用並且屏幕數量很少(10個屏幕相對較低),那麼您可能需要在應用程序啓動時創建它們,以便UI一旦應用程序加載,就會變得越來越快。

如果你使用綁定,那麼你可能需要想出一個處理策略(即使你只處理綁定),所以你沒有太多的事件飛來飛去。

控件有一個setVisible(boolean)方法(和Composite從Control繼承),您可以使用它來顯示和隱藏組件。注意這隻會阻止在屏幕上顯示組合,佈局管理器仍然會爲其分配一個空白區域。許多SWT佈局有一種方法可以從佈局中排除控制,從而擺脫空白。例如,如果您正在使用GridLayout,那麼當您隱藏該控件時,您會將GridData對象上的排除變量設置爲true。

另一種選擇是使用StackLayout。這可以讓您將一堆複合材料堆疊在一起,然後選擇最上面的複合材料。如果您擁有靜態區域和您所描述的工作區域,這可能非常適合您。我會把頭文件,頁腳和一個帶StackLayout的空複合件放在類文件中。然後,我會將每個屏幕顯示在工作區域中的自己的類。您可以讓這些屏幕類擴展Composite,然後在構造函數中自行設置,或者您可以使用工廠方法來設置屏幕。任何一種都是一種常見和可接受的做法,並歸結爲一種品味問題。

+0

優秀的答案。謝謝! – parxier 2010-04-20 23:14:39

+0

我只能找到'java.awt.CardLayout'。它不是標準SWT課程組的一部分嗎? – parxier 2010-04-21 00:24:45

+1

對不起,我的錯誤是SWT中的StackLayout。 – rancidfishbreath 2010-04-22 14:41:28

相關問題