2013-03-11 25 views
2

我有一個jFace嚮導,我正在使用它創建一個新的項目類型eclipse插件。正如你可以從下面的圖片看到的,我在左側有一個樹形視圖,在右側有一個SWT組。我想要的是,當用戶從treeviewer中選擇一個項目時,我應該能夠在右側的SWT Group上創建動態控件。說用戶選擇測試一,右側我應該能夠創建一些控件,如標籤,文本和右側的幾個單選按鈕,類似地,如果用戶選擇測試二我應該能夠在右側創建動態控件。 enter image description here如何在JFace Wizard中動態創建控件

目前我嘗試下面的代碼:

tree.addSelectionListener(new SelectionAdapter() { 
    @Override 
public void widgetSelected(SelectionEvent e) { 
    for (int i = 0; i < selection.length; i++) { 

    String tempStr = selection[i].toString(); 
    tempStr = tempStr.replaceAll("TreeItem \\{", ""); 
    String finalStr = tempStr.replaceAll("\\}", ""); 

     if (finalStr.equals("Test One")) { 
      Button btn = new Button(g2, SWT.NONE); //g2 is right side group 

      btn.setText("Blaaaa"); 

      btn.setVisible(true); 
      container.redraw(); 
     } 

} 

但是當我跑,我見右圖組沒有變化。任何人都可以指導我做錯了什麼?任何指針都將非常感謝,因爲我是Eclipse開發和SWT的新手。

回答

4

您可能沒有在g2組上設置佈局。這是控制不能顯示的常見原因。您也可以嘗試使用g2.layout()以確保新控件在創建後正確佈置。

此外,你可以看看使用StackLayout,這樣一旦你創建了一組控件,你可以將它們全部隱藏起來,而不是在選擇發生變化時將其全部隱藏起來。這通常是有用的,因此如果用戶回到之前的選擇,他們將在切換選擇時在相同狀態下找到他們輸入的數據。 Here is an example

+0

好的,謝謝我會嘗試這個並更新你:) – 2013-03-11 07:12:28