2016-03-01 47 views
0

的使用案例很簡單:Eclipse插件視圖 - 如何在飛行中添加和處理複合材料

在滾動複合,我有一個下拉菜單,當我從中選擇一個項目,幾個ChartComposites產卵在下面的網格佈局。

然後我再次選擇下拉菜單,我點擊另一個項目,所有先前衍生的複合材料都被丟棄,並且視圖中填充了新的。

現在對於更多的細節:

兩個下拉和ChartComposites包含在普通複合 (因爲我只能設置一個複合的ScrolledComposite),其中有一個網格佈局,因爲我希望他們安排在某種方式。

問題是我不知道如何在視圖創建後調用createPartControl()來處理我不再需要的組合並創建新的組合。

我試過使用Content Provider,但我不認爲它適用於預製複合材料,因爲結果是它應該返回的ChartComposites被轉換爲Object並不再是...圖表。

我考慮過使用StackLayout,但我真的需要GridLayout我現在有這樣不起作用。

那麼有沒有人知道一個快速簡單的方法來處理和添加複合到已經創建的視圖通過監聽(選擇一個下拉項,按下按鈕等)?

+0

您可以結合StackLayout和GridLayout來實現此目的,而不會在嘗試處置事物時搞亂。 –

+0

我可以在同一個組合中使用它們,還是必須製作另一個僅包含圖表(由網格佈局排列)的組合,而另一個組合包含下拉列表和此組合,使用StackLayout? –

回答

2

您可以使用StackLayoutGridLayout來實現此目的,而不必亂用dispose

從您的問題中不清楚GUI設計是什麼。以下代碼堆棧了多個複合子代:

Composite parent = new Composite(body, SWT.NONE); 
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
StackLayout layout = new StackLayout(); 
parent.setLayout(layout); 

Composite child1 = new Composite(parent, SWT.NONE); 
child1.setLayout(new GridLayout()); 
// TODO .... add controls to child1 for first 'page' 

Composite child2 = new Composite(parent, SWT.NONE); 
child2.setLayout(new GridLayout()); 
// TODO .... add controls to child2 for second 'page' 

layout.topControl = child; 
layout.layout(); 
+0

我得看一看,看看能不能做點什麼。我注意到StackLayout可以把一個複合物放在上面,這是我選擇的複合物。對我來說,這有點複雜,我希望能夠在視圖中添加多達200個複合材料,並按下按鈕擺脫所有這些複合材料,並將100個複合材料置於其位置。也許它可能工作,如果我把它們放到一個組或作爲他們的容器組合,並把它作爲StackLayout頁面。 –

+1

您只需將所有複合材料作爲單個複合材料的子單元。 –

+0

我還注意到ScrolledComposite的setContent(composite)方法可以從偵聽器中調用,並且它隨時更改滾動區域。任何墮落使用它? –