0

单击扩展平台首选项的 Eclipse 插件内的按钮时,我试图打开 DateTime 外壳。

这是按钮选择适配器的代码

    @Override
    public void widgetSelected(SelectionEvent e) {
           super.widgetSelected(e);
          Display display = Display.getCurrent();
          Shell ns = new Shell(display);
          ns.setLayout (new RowLayout ());
          final DateTime calendar = new DateTime (ns, SWT.CALENDAR);
          ns.pack();
          ns.open();
          ns.forceActive();
          ns.setEnabled(true);
          while (!ns.isDisposed()) {
              if (!display.readAndDispatch())
                display.sleep();
           }
    }

正如您在下图中看到的那样,描述了 shell,但似乎未启用。确实不可能选择任何日期或关闭/调整它的大小。如您所见,三个按钮(红色、黄色和绿色)显示为灰色。我究竟做错了什么?

在此处输入图像描述

更新

我试图得到这样的外壳:

  Display display = new Display();
  IWorkbench workbench    = PlatformUI.getWorkbench();
  IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
  Shell shell             = window.getShell();

但现在我明白了在此处输入图像描述

这实际上与我的意图相去甚远。我的目标是使用 DateTime 小部件显示一个新窗口

更新

我遵循 Gilbert 的建议并定义了我自己的 JFace 对话框。正如 Lars Vogel 在http://www.vogella.com/articles/EclipseDialogs/article.html中所述,我将它创建为 TitleAreaDialog 的扩展。它现在可以工作,但我还有一些需要改进的地方。

在此处输入图像描述

我想隐藏标题的大标题并隐藏/删除帮助按钮。有没有办法做到这一点?我在扩展错误的课程吗?

4

1 回答 1

2

既然您说您正在构建一个 Eclipse 插件,请尝试以下方法来获取 Shell。

IWorkbench workbench    = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell shell             = window.getShell();

创建自己的 Shell 不是一个好主意,除非您在 Eclipse 之外构建 SWT 应用程序。

创建自己的 Display 不是一个好主意,除非您在 Eclipse 之外构建 SWT 应用程序。

我认为您正在寻找的是日历的对话框。您必须扩展 Eclipse Dialog 类来制作您自己的对话框。

于 2013-01-18T20:22:28.660 回答