我试图在单击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但似乎未启用。确实无法选择任何日期,也无法关闭/调整大小。如您所见,三个底部(红色,黄色和绿色)显示为灰色。 我做错了什么?
更新
我试图像这样得到shell:
Display display = new Display();
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell shell = window.getShell();
但现在我得到了这个
实际上与我的意图相差甚远。我的目标是使用DateTime小部件显示一个新窗口
更新
我遵循吉尔伯特的建议并定义了我自己的JFace对话。 正如Lars Vogel在http://www.vogella.com/articles/EclipseDialogs/article.html中所描述的那样,我创建了它作为TitleAreaDialog的扩展。它现在有效,但我仍需要改进。
我想隐藏标题的大标题并隐藏/删除帮助按钮。 有没有办法做到这一点?我是否延长了错误的课程?
答案 0 :(得分:2)
由于您说您正在构建Eclipse插件,请尝试以下操作来获取Shell。
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell shell = window.getShell();
创建自己的Shell并不是一个好主意,除非您在Eclipse之外构建SWT应用程序。
除非您在Eclipse之外构建SWT应用程序,否则创建自己的人机界面并不是一个好主意。
我认为,您所寻找的是日历的对话框。您必须扩展Eclipse Dialog类才能创建自己的对话框。