我试图在单击扩展平台首选项的 Eclipse 插件内的按钮时打开 DateTime shell。
这是按钮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,但似乎未启用。确实无法选择任何日期或关闭/调整其大小。正如您所看到的,三个按钮(红色、黄色和绿色)显示为灰色。 我做错了什么?
更新
我尝试像这样获取外壳:
Display display = new Display();
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell shell = window.getShell();
但现在我明白了
这实际上与我的意图相去甚远。我的目标是显示一个带有 DateTime 小部件的新窗口
更新
我遵循了 Gilbert 的建议并定义了我自己的 JFace Dialog。 正如 Lars Vogel 在 http://www.vogella.com/articles/EclipseDialogs/article.html 中所述我将其创建为 TitleAreaDialog 的扩展。现在可以使用了,但仍有一些地方需要改进。
我想隐藏标题的大标题并隐藏/删除帮助按钮。 有什么办法可以做到这一点吗?我是否扩展了错误的类?
最佳答案
既然您说您正在构建 Eclipse 插件,请尝试以下操作来获取 Shell。
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell shell = window.getShell();
创建您自己的 Shell 并不是一个好主意,除非您在 Eclipse 之外构建 SWT 应用程序。
创建您自己的 Display 并不是一个好主意,除非您在 Eclipse 之外构建 SWT 应用程序。
我认为您正在寻找的是日历对话框。您必须扩展 Eclipse Dialog 类才能创建您自己的对话框。
关于java - SWT 未启用 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406861/