我已经尝试过eclipse GIT示例来打开SWT浏览器 参考:http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet260.java 这段代码在Windows上运行没有任何问题。但我在Linux中遇到异常。
我正在开发一个eclipse插件,它有一个存储库设置页面,它通过在覆盖方法@Override中扩展“AbstractRepositorySettingsPage”创建“public void run(IProgressMonitor a_monitor)抛出CoreException”我在这个方法中创建Display
更新 如果我通过Linux中的main()方法运行它,这段代码就可以工作。
org.eclipse.swt.SWTError: Not implemented [multiple displays]
Root exception:
org.eclipse.swt.SWTError: Not implemented [multiple displays]
at org.eclipse.swt.SWT.error(SWT.java:4423)
at org.eclipse.swt.widgets.Display.checkDisplay(Display.java:767)
at org.eclipse.swt.widgets.Display.create(Display.java:908)
at org.eclipse.swt.graphics.Device.<init>(Device.java:156)
at org.eclipse.swt.widgets.Display.<init>(Display.java:507)
at org.eclipse.swt.widgets.Display.<init>(Display.java:498)
at com.test$OpenPage.run(test.java:267)
at org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositorySettingsPage$29.run(AbstractRepositorySettingsPage.java:1964)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
AFAIK上面的异常是因为它试图创建一个新的Display对象所以我试图用现有的NON UI线程创建Display并打开浏览器
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable()
{
public void run()
{
Shell aShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
Shell myShell = new Shell (aShell , SWT.SHELL_TRIM);
// Very important, generally parents must have a layout set to display children
myShell.setLayout (new FillLayout());
Browser browser = new Browser (myShell, SWT.NONE);
browser.setUrl ("http://www.google.de");
myShell.layout();
myShell.open();
}
});
以上代码段会打开浏览器,但不允许在打开的搜索引擎中输入任何内容。我想在可用的文本框中输入,并且它也不会在单击关闭按钮时关闭打开的浏览器。我终止了日食。