windows 10 上的 SWT FileDialog 缺少导航栏
SWT FileDialog is missing the navigation bar on windows 10
我有一个小的 eclipse RCP 应用程序。
我注意到 windows 10 FileDialog
上没有可用的路径部分。
我在对话框初始化期间尝试了 Style
标志的不同组合,但没有成功。
值得一提的是windows7.
一切正常
windows10: 上没有导航栏
预期:
对该问题的进一步调查,我得出以下结论:
如果我从 WorkbenchAdvisor
.
开始,对话框会正确显示导航栏
代码基本上是这样的:
@Override
public Object start(IApplicationContext context) throws Exception {
try {
int returnCode = PlatformUI.createAndRunWorkbench(display, new WorkbenchAdvisor() {
@Override
public void postStartup() {
// THIS MAKES THE DIALOG APPEAR WITHOUT NAVIGATION BAR
Display display = new Display();
Shell shell = new Shell(display);
FileDialog dialog = new FileDialog (shell, SWT.OPEN | SWT.MULTI);
dialog.open();
shell.close();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) {
display.sleep ();
}
}
}
});
if (returnCode == PlatformUI.RETURN_RESTART) {
return IApplication.EXIT_RESTART;
}
return IApplication.EXIT_OK;
} finally {
Display.getDefault().dispose();
}
return IApplication.EXIT_OK;
}
我需要能够在启动 workbench 后正确启动 FileDialog
。
如果我执行以下操作,对话框会正确显示导航栏,但这不是我想要的:
@Override
public Object start(IApplicationContext context) throws Exception {
// THIS MAKES THE DIALOG APPEAR WITH THE NAVIGATION BAR CORRECTLY
Display display = new Display();
Shell shell = new Shell(display);
FileDialog dialog = new FileDialog (shell, SWT.OPEN | SWT.MULTI);
dialog.open();
shell.close();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) {
display.sleep ();
}
}
Display.getDefault().dispose();
return IApplication.EXIT_OK;
}
我仍然不知道如何解决这个问题或者到底发生了什么。
另一条信息是,如果我使用启动配置从 eclipse 启动我的 RCP,它工作得很好,即使我在 WorkbenchAdvisor
.
我建议您使用 org.eclipse.ui.startup
扩展程序。您在 plugin.xml.
上声明它
此扩展要求您提供实现 IStartup
接口的 class。此 class' earlyStartup
方法运行 after WorkbenchAdvisor.postStartup
.
也许这时候会出现导航栏。
我有一个小的 eclipse RCP 应用程序。
我注意到 windows 10 FileDialog
上没有可用的路径部分。
我在对话框初始化期间尝试了 Style
标志的不同组合,但没有成功。
值得一提的是windows7.
一切正常windows10: 上没有导航栏
预期:
对该问题的进一步调查,我得出以下结论:
如果我从 WorkbenchAdvisor
.
代码基本上是这样的:
@Override
public Object start(IApplicationContext context) throws Exception {
try {
int returnCode = PlatformUI.createAndRunWorkbench(display, new WorkbenchAdvisor() {
@Override
public void postStartup() {
// THIS MAKES THE DIALOG APPEAR WITHOUT NAVIGATION BAR
Display display = new Display();
Shell shell = new Shell(display);
FileDialog dialog = new FileDialog (shell, SWT.OPEN | SWT.MULTI);
dialog.open();
shell.close();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) {
display.sleep ();
}
}
}
});
if (returnCode == PlatformUI.RETURN_RESTART) {
return IApplication.EXIT_RESTART;
}
return IApplication.EXIT_OK;
} finally {
Display.getDefault().dispose();
}
return IApplication.EXIT_OK;
}
我需要能够在启动 workbench 后正确启动 FileDialog
。
如果我执行以下操作,对话框会正确显示导航栏,但这不是我想要的:
@Override
public Object start(IApplicationContext context) throws Exception {
// THIS MAKES THE DIALOG APPEAR WITH THE NAVIGATION BAR CORRECTLY
Display display = new Display();
Shell shell = new Shell(display);
FileDialog dialog = new FileDialog (shell, SWT.OPEN | SWT.MULTI);
dialog.open();
shell.close();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) {
display.sleep ();
}
}
Display.getDefault().dispose();
return IApplication.EXIT_OK;
}
我仍然不知道如何解决这个问题或者到底发生了什么。
另一条信息是,如果我使用启动配置从 eclipse 启动我的 RCP,它工作得很好,即使我在 WorkbenchAdvisor
.
我建议您使用 org.eclipse.ui.startup
扩展程序。您在 plugin.xml.
此扩展要求您提供实现 IStartup
接口的 class。此 class' earlyStartup
方法运行 after WorkbenchAdvisor.postStartup
.
也许这时候会出现导航栏。