Java Eclipse霓虹灯和氧气设置扩展网格布局can';t按填充布局铸造

Java Eclipse霓虹灯和氧气设置扩展网格布局can';t按填充布局铸造,java,eclipse,rcp,eclipse-indigo,eclipse-oxygen,Java,Eclipse,Rcp,Eclipse Indigo,Eclipse Oxygen,我有一个很大的eclipse Indigo RCP插件程序。 尝试迁移到Oxygen和Java8(从7开始)时,我遇到了有关GridLayouts的所有om my setExpanded(false)问题 我得到的响应类似于…无法将GridLayout强制转换为FillLayout。 奇怪的是,这在靛蓝中起作用。两个版本之间的代码库没有更改。除此之外,该计划似乎还有效 有什么想法吗 当然,我可以添加错误消息,但我的问题是,靛蓝和氧气,甚至氖和氧气之间是否存在与setExtend有关的变化 201

我有一个很大的eclipse Indigo RCP插件程序。 尝试迁移到Oxygen和Java8(从7开始)时,我遇到了有关GridLayouts的所有om my setExpanded(false)问题

我得到的响应类似于…无法将GridLayout强制转换为FillLayout。 奇怪的是,这在靛蓝中起作用。两个版本之间的代码库没有更改。除此之外,该计划似乎还有效

有什么想法吗

当然,我可以添加错误消息,但我的问题是,靛蓝和氧气,甚至氖和氧气之间是否存在与setExtend有关的变化

2014年有一个bug报告,但似乎从未得到解决

堆栈跟踪:

!条目org.eclipse.ui 4 0 2017-09-15 08:44:54.915
!消息未处理的事件循环异常
!堆栈0
java.lang.ClassCastException:org.eclipse.swt.layout.GridData不能转换为org.eclipse.swt.layout.FillData
位于org.eclipse.swt.layout.FillLayout.flushCache(FillLayout.java:173)
位于org.eclipse.swt.widgets.Composite.layout(Composite.java:831)
位于org.eclipse.swt.widgets.Control.requestLayout(Control.java:2427)
位于org.eclipse.ui.forms.widgets.ExpandableComposite.reflow(ExpandableComposite.java:1139)
位于org.eclipse.ui.forms.widgets.Section.reflow(Section.java:122)
位于org.eclipse.ui.forms.widgets.ExpandableComposite.internalSetExpanded(ExpandableComposite.java:893)
位于org.eclipse.ui.forms.widgets.Section.internalSetExpanded(Section.java:108)
位于org.eclipse.ui.forms.widgets.ExpandableComposite.toggleState(ExpandableComposite.java:1068)
位于org.eclipse.ui.forms.widgets.ExpandableComposite.access$5(ExpandableComposite.java:1065)
位于org.eclipse.ui.forms.widgets.ExpandableComposite$1.linkActivated(ExpandableComposite.java:576)
位于org.eclipse.ui.forms.widgets.AbstractHyperlink.handleActivate(AbstractHyperlink.java:213)
位于org.eclipse.ui.forms.widgets.AbstractHyperlink.handleMouseUp(AbstractHyperlink.java:307)
位于org.eclipse.ui.forms.widgets.AbstractHyperlink.lambda$3(AbstractHyperlink.java:115)
位于org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
位于org.eclipse.swt.widgets.Display.sendEvent(Display.java:4428)
位于org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1079)
位于org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4238)
位于org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3817)
位于org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
位于org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
位于org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1044)
位于org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
位于org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
位于org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
位于org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
位于org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
位于com.myCompany.rcp.console.product.Application.start(Application.java:167)
在org.eclipse.equinox.internal.app.eclipseeapphandle.run上(eclipseeapphandle.java:196)
位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.runApplication(eclipseeappluncher.java:134)
位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.start(eclipseeappluncher.java:104)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:388)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:243)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
位于org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
位于org.eclipse.equinox.launcher.Main.run(Main.java:1499)
位于org.eclipse.equinox.launcher.Main.Main(Main.java:1472)
代码:

@覆盖
公共void createPartControl(复合父级)
{
//工具箱
FormToolkit=newformtoolkit(parent.getDisplay());
toolkit.setBorderStyle(SWT.NO);
//基本组件
baseComp=toolkit.createComposite(父级);
GridLayout=新的GridLayout();
layout.horizontalSpacing=0;
layout.verticalSpacing=0;
布局。marginHeight=0;
布局。marginWidth=0;
基本组件设置布局(布局);
baseComp.setLayoutData(新的GridData(GridData.FILL_两者));
m|u searchRoiSection=toolkit.createSection(baseComp,Section.DESCRIPTION | Section.TWISTIE | Section.EXPANDED);
m_searchRoiSection.setActiveToggleColor(toolkit.getHyperlinkGroup().getActiveForeground());
m_searchRoiSection.setToggleColor(toolkit.getColors().getColor(IFormColors.SEPARATOR));
toolkit.CreateCompositeSparator(m_搜索部分);
布局=新的GridLayout();
layout.horizontalSpacing=0;
布局垂直间距=10;
layout.marginHeight=0;
layout.marginWidth=0;
m_.段.设置布局(布局);
m_searchRoiSection.setLayoutData(新的GridData(GridData.FILL_HORIZONTAL));
m_searchRoiSection.addExpansionListener(新的ExpansionAdapter()
{
公共无效expansionStateChanged(ExpansionEvent e)
{
updateRoiSection();
}
});
m_searchroi section.setText(“ROI”);
m_searchRoiSection.setDescription(“选择感兴趣的区域,任何区域留空”);
复合searchRoiComp=toolkit.createComposite(m_SearchRoicSection);
布局=新的GridLayout();
布局。水平间距=3;
布局垂直间距=3;
layout.marginHeight=5;
layout.marginWidth=5;
layout.numColumns=3;
搜索组件设置布局(布局);
//创建ROI搜索部分内容
createRoiSearch(searchRoiComp);
m_searchroisio
baseComp.setLayoutData(new GridData(GridData.FILL_BOTH));
layout = new GridLayout();
layout.horizontalSpacing = 0;
layout.verticalSpacing = 10;
layout.marginHeight = 0;
layout.marginWidth = 0;
m_searchRoiSection.setLayout(layout);