Java Eclipse RCP修剪状态栏复合页边距太大,无法显示文本
我正在为EclipseRCP应用程序开发一个插件。在这个插件中,我想在修剪状态栏中设置一条文本消息和一个图标 考虑到我的情况,我认为我可以放弃以下方法:Java Eclipse RCP修剪状态栏复合页边距太大,无法显示文本,java,layout,swt,eclipse-rcp,Java,Layout,Swt,Eclipse Rcp,我正在为EclipseRCP应用程序开发一个插件。在这个插件中,我想在修剪状态栏中设置一条文本消息和一个图标 考虑到我的情况,我认为我可以放弃以下方法: ActionBarAdvisor方法似乎需要主应用程序设置状态栏内容。这是不合适的,因为插件应该能够独立于应用程序,反之亦然 StatusLineContributionItem似乎绑定到某个视图。在我的例子中,无论当前选择的视图是什么,都必须为整个应用程序全局设置内容 这就给我们留下了方法。我按照这种方法设置了一个小样本实现: plugi
- ActionBarAdvisor方法似乎需要主应用程序设置状态栏内容。这是不合适的,因为插件应该能够独立于应用程序,反之亦然
- StatusLineContributionItem似乎绑定到某个视图。在我的例子中,无论当前选择的视图是什么,都必须为整个应用程序全局设置内容
<menuContribution
allPopups="false"
locationURI="toolbar:org.eclipse.ui.trim.status">
<toolbar
id="mypackage.toolbarContribution">
<control
class="mypackage.StatusBarContribution">
</control>
</toolbar>
</menuContribution>
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
public class StatusBarContribution extends WorkbenchWindowControlContribution {
protected Composite composite = null;
@Override
protected Control createControl(Composite parent) {
FillLayout layout = new FillLayout(SWT.HORIZONTAL);
layout.marginHeight = 0;
layout.marginWidth = 0;
composite = new Composite(parent, SWT.NO_TRIM | SWT.BORDER);
composite.setLayout(layout);
Text text = new Text(composite, SWT.NONE);
text.setText("foo");
return composite;
}
}
但这只在状态栏中提供了一小部分文本:
我故意设置
composite = new Composite(parent, SWT.NO_TRIM | SWT.BORDER);
要查看布局页边距,请执行以下操作:
如您所见,创建的组合高度非常低,无法正确显示文本:
那么,我是否在这里遗漏了什么?例如,使用另一个边距属性或SWT位样式?您可以尝试使用GridLayout而不是FillLayour。在文本上使用带有宽度和高度提示的GridData。嗨,Greg,在将布局更改为GridLayout后,我尝试了以下操作,但没有成功:
GridData GridData=new GridData(SWT.FILL,SWT.start,false,true);gridData.heightHint=text.computeSize(SWT.DEFAULT,SWT.DEFAULT).y;text.setLayoutData(gridData)代码>@Niklas你解决这个问题成功了吗?我刚刚将我的RCP应用程序从开普勒升级到2020-03,现在出现了与您描述的相同的问题。