【问题标题】:How to create controls dynamically in JFace Wizard如何在 JFace 向导中动态创建控件
【发布时间】:2013-02-26 03:40:04
【问题描述】:

我有一个 jFace 向导,我正在使用它来创建一个新的项目类型 eclipse 插件。如下图所示,我在左侧有一个 treeviewer,在右侧有一个 SWT 组。我想要的是当用户从 treeviewer 中选择一个项目时,我应该能够在右侧 SWT Group 上创建动态控件。假设用户选择测试一,在右侧我应该能够在右侧创建一些控件,如标签、文本和几个单选按钮,类似地,如果用户选择测试二,我应该能够在右侧创建动态控件。

目前我尝试了以下代码:

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

【问题讨论】:

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


    【解决方案1】:

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

    此外,您可以考虑使用StackLayout,这样一旦您创建了一组控件,您就可以一次将它们全部隐藏,而不是在选择更改时销毁它们。这通常很有用,因此如果用户返回之前的选择,他们会发现他们输入的数据在切换选择时处于相同的状态。 Here is an example.

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多