Windows 10 SWT FileDialog缺少windows 10上的导航栏

Windows 10 SWT FileDialog缺少windows 10上的导航栏,windows-10,swt,eclipse-rcp,Windows 10,Swt,Eclipse Rcp,我有一个小的EclipseRCP应用程序 我注意到在windows 10上,FileDialog没有可用的路径部分 在对话框初始化期间,我尝试了不同的Style标志组合,但没有成功 值得一提的是,在Windows7上一切正常 windows 10上没有导航栏: 期望值: 对该问题的进一步调查我得出以下结论: 如果从WorkbenchHadvisor启动该对话框,则该对话框将与导航栏一起正确显示 代码基本上是这样的: @Override public Object start(IApplic

我有一个小的EclipseRCP应用程序

我注意到在windows 10上,FileDialog没有可用的路径部分

在对话框初始化期间,我尝试了不同的
Style
标志组合,但没有成功

值得一提的是,在Windows7上一切正常

windows 10上没有导航栏:

期望值:

对该问题的进一步调查我得出以下结论:

如果从
WorkbenchHadvisor
启动该对话框,则该对话框将与导航栏一起正确显示

代码基本上是这样的:

@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;
}
启动工作台后,我需要能够正确启动
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,它会正常工作,即使我在
WorkbenchHadVisor
中启动它,文件对话框也会与导航栏一起出现,我建议您使用
org.eclipse.ui.startup
扩展名。您可以在plugin.xml上声明它

此扩展要求您提供一个实现
IStartup
接口的类。此类“
earlyStartup
方法在WorkbenchHadVisor.postStartup之后运行


这时可能会出现导航栏。

只是猜测:您是否尝试使用
Display.getDefault()
而不是创建一个新的导航栏?是的,我尝试了
Display.getDefault()
,但没有区别,我检查了它的主体,发现它基本上回到了
newdisplay()
如果之前没有初始化任何显示,那么它也差不多。我还尝试了
PlatformUI.getWorkbench().getDisplay()WorkbenchHadVisor
postStartup
方法中执行时,这与使用
IPlatformRunnable
而不是
iaApplication
一样有效。