如何在JFace向导中动态创建控件

时间:2013-03-11 03:00:15

标签: java eclipse-plugin swt eclipse-rcp jface

我有一个jFace向导,我用它来创建一个新的项目类型eclipse插件。从下图中可以看出,左侧有一个树状视图,右侧有一个SWT组。我想要的是当用户从treeviewer中选择一个项目时,我应该能够在右侧SWT Group上创建动态控件。假设用户选择Test One,一个右侧我应该能够在右侧创建一些控件,如标签,文本和几个单选按钮,类似地,如果用户选择Test Two,我应该能够在右侧创建动态控件。 enter image description here

目前我尝试了以下代码:

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的新手。

1 个答案:

答案 0 :(得分:4)

您可能没有在g2组上设置布局。这是控件未显示的常见原因。您也可以尝试使用g2.layout()来确保在创建新控件后正确布局它们。

此外,您可以查看使用StackLayout,以便在创建一组控件后,您可以立即隐藏它们,而不是在选择更改时销毁。这通常很有用,因此如果用户返回到先前的选择,他们将在切换选择时找到他们以相同状态输入的数据。 Here is an example