2017-09-14 161 views
1

我爲我的e4 rcp應用程序創建一個狀態欄,但狀態欄很小。RCP E4狀態欄是小的

以我Appliication.e4xmi是以下配置:

修剪窗口 - > TrimBars - >窗裝飾(底部) - >工具欄 - >工具控制(鏈接到我的StatusBar類)

鏈接狀態條類:

public class StatusBar { 

private Label label; 

@Inject 
private IEventBroker eventBroker; 
public static final String STATUSBAR = "statusbar"; 

@Inject 
@Optional 
public void getEvent(@UIEventTopic(STATUSBAR) String message) { 
    updateInterface(message); 
} 

@PostConstruct 
public void createControls(Composite parent) { 
    label = new Label(parent, SWT.LEFT); 
    label.setBackground(parent.getBackground()); 
} 

public void updateInterface(String message) { 
    try { 
     Display.getDefault().asyncExec(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        label.setText(message); 
       } catch (Exception e) { 
        logger.error(e.fillInStackTrace()); 
       } 
      } 
     }); 
    } catch (Exception exception) { 
     logger.error(exception.fillInStackTrace()); 
    } 
} 

View of the Statusbar

+0

太小,以什麼方式?不夠深?不夠長? –

+0

狀態欄的高度很小。 – Darksmilie

回答

0

你並不需要一個ToolControl一個Toolbar。將ToolControl作爲修剪欄的直接子元素。

把標籤中的複合得到它奠定了正確:

@PostConstruct 
public void createGui(final Composite parent) 
{ 
    Composite body = new Composite(parent, SWT.NONE); 

    body.setLayout(new GridLayout()); 

    Label label = new Label(body, SWT.LEFT); 

    label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 

    .... 
} 

您可能還需要在e4xmi指定的stretch在ToolControl definiton標籤值,使控制使用所有可用的水平空間在修剪欄中。

+0

這不起作用,如果我在body上定義LayoutData,狀態欄有正確的高度,但我得到一個classcastexecption: java.lang.ClassCastException:org.eclipse.swt.layout.GridData不能轉換爲org .eclipse.swt.layout.FillData – Darksmilie

+0

我錯過了將ToolControl放在工具欄中 - 你不需要這樣做。將ToolControl作爲修剪欄的子項,不需要工具欄。 –

+0

工作,謝謝。 – Darksmilie