SWT未启用shell

时间:2013-01-18 20:09:15

标签: java eclipse swt

我试图在单击Eclipse插件内的按钮时打开一个DateTime shell,该插件扩展了平台的首选项。

这是Button SelectionAdapter的代码

    @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但似乎未启用。确实无法选择任何日期,也无法关闭/调整大小。如您所见,三个底部(红色,黄色和绿色)显示为灰色。 我做错了什么?

enter image description here

更新

我试图像这样得到shell:

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

但现在我得到了这个enter image description here

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

更新

我遵循吉尔伯特的建议并定义了我自己的JFace对话。 正如Lars Vogel在http://www.vogella.com/articles/EclipseDialogs/article.html中所描述的那样,我创建了它作为TitleAreaDialog的扩展。它现在有效,但我仍需要改进。

enter image description here

我想隐藏标题的大标题并隐藏/删除帮助按钮。 有没有办法做到这一点?我是否延长了错误的课程?

1 个答案:

答案 0 :(得分:2)

由于您说您正在构建Eclipse插件,请尝试以下操作来获取Shell。

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

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

除非您在Eclipse之外构建SWT应用程序,否则创建自己的人机界面并不是一个好主意。

我认为,您所寻找的是日历的对话框。您必须扩展Eclipse Dialog类才能创建自己的对话框。