Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse RCP修剪状态栏复合页边距太大,无法显示文本_Java_Layout_Swt_Eclipse Rcp - Fatal编程技术网

Java Eclipse RCP修剪状态栏复合页边距太大,无法显示文本

Java Eclipse RCP修剪状态栏复合页边距太大,无法显示文本,java,layout,swt,eclipse-rcp,Java,Layout,Swt,Eclipse Rcp,我正在为EclipseRCP应用程序开发一个插件。在这个插件中,我想在修剪状态栏中设置一条文本消息和一个图标 考虑到我的情况,我认为我可以放弃以下方法: ActionBarAdvisor方法似乎需要主应用程序设置状态栏内容。这是不合适的,因为插件应该能够独立于应用程序,反之亦然 StatusLineContributionItem似乎绑定到某个视图。在我的例子中,无论当前选择的视图是什么,都必须为整个应用程序全局设置内容 这就给我们留下了方法。我按照这种方法设置了一个小样本实现: plugi

我正在为EclipseRCP应用程序开发一个插件。在这个插件中,我想在修剪状态栏中设置一条文本消息和一个图标

考虑到我的情况,我认为我可以放弃以下方法:

  • ActionBarAdvisor方法似乎需要主应用程序设置状态栏内容。这是不合适的,因为插件应该能够独立于应用程序,反之亦然

  • StatusLineContributionItem似乎绑定到某个视图。在我的例子中,无论当前选择的视图是什么,都必须为整个应用程序全局设置内容

这就给我们留下了方法。我按照这种方法设置了一个小样本实现:

plugin.xml实现:

  <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,现在出现了与您描述的相同的问题。