2017-04-03 32 views
0

我有一個包含標題和瀏覽器的視圖。我想讓瀏覽器填充我的視圖。這是它應該看起來如何: 在SWT中使用帶瀏覽器的FillLayout

我試過了不同的組合。

c = new Composite(parent, SWT.NONE); 
    c.setLayout(new RowLayout(SWT.VERTICAL)); 

    Label l = new Label(c, SWT.NONE); 
    l.setBackground(color); 
    l.setText("----------------------Heading--------------------------------"); 
    l.setFont(new Font(null, new FontData(Constants.FONT, 12, SWT.BOLD))); 

    Composite wrapper = new Composite(c, SWT.NONE); 
    wrapper.setBackground(new Color(null, 0, 0, 0)); 
    wrapper.setLayout(new FillLayout(SWT.VERTICAL)); 
    browser = new Browser(wrapper, SWT.WRAP); 
    browser.setBackground(color); 

生產:

一個FillLayout的設置爲c也不起作用。通過這樣做,標題和瀏覽器,共享視圖的大小,並具有相同的大小。

c = new Composite(parent, SWT.NONE); 
    c.setLayout(new FillLayout(SWT.VERTICAL)); 

    Label l = new Label(c, SWT.NONE); 
    l.setBackground(color); 
    l.setText("----------------------Heading--------------------------------"); 
    l.setFont(new Font(null, new FontData(Constants.FONT, 12, SWT.BOLD))); 

    browser = new Browser(c, SWT.WRAP); 
    browser.setBackground(color); 

生產:

我也曾嘗試以下操作:

composite with filllayout 

-> composite with gridlayout 

    ->composite with rowLayout (fixed height, grab right) 

    ->composite with rowLayout 

     -> composite with fillLayout 

      -> composite with browser 
+0

至少,「Composite c」沒有* layoutdata *供父級使用。 – nitind

回答

1

假設頭和瀏覽器具有相同的父,你可以使用一個GridLayout這樣的:

parent.setLayout(new GridLayout(1, false)); 
label.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); 
browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

即使一次性使用,細胞網格並不是真的是一個GridLayout的意思,它應該做的伎倆。佈局數據建議標籤在頂部對齊,並使用所有水平空間和瀏覽器使用水平和垂直空間。

+0

非常感謝。它按需要工作。 – mollwitz