2015-10-01 18 views
-1

我有父過濾器組合。我的例子形象是在這裏:如何從SWT中的組合中添加組?

enter image description here

我想補充一組出這個過濾器複合物。我的示例代碼如下:

// create parent layout 
    GridLayout parentLayout = new GridLayout(1, true); 
    parent.setLayout(parentLayout);   

    // design filter composite layout 
    Group grp = new Group(parent, SWT.NONE); 

    RowLayout grdLay = new RowLayout(); 

    GridData grdData = new GridData(); 

    grp.setLayoutData(grdData); 

    grp.setLayout(grdLay); 

    Composite grpComp = new Composite(grp,SWT.NONE); 

    GridData gdData = new GridData();  

    RowLayout grplayout = new RowLayout(); 

    grpComp.setLayout(grplayout); 

    grpComp.setLayoutData(gdData); 

    Composite filterComposite = new Composite(grpComp, SWT.NONE); 
    GridData gd_filterComposite = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); 
    gd_filterComposite.widthHint = 1611; 
    gd_filterComposite.heightHint = 42; 
    filterComposite.setLayoutData(gd_filterComposite); 

    RowLayout filterCompositeLayout = new RowLayout(); 
    filterCompositeLayout.type = SWT.VERTICAL; 
    filterCompositeLayout.marginHeight = 5; 
    filterCompositeLayout.center = true; 
    filterCompositeLayout.fill = true; 
    filterCompositeLayout.justify = true; 
    filterCompositeLayout.wrap = true; 
    filterComposite.setLayout(filterCompositeLayout); 

    filterCompositeLayout.spacing = 20; 

但我有一個錯誤。我的錯誤圖像是在這裏:

enter image description here

我怎樣才能實現這一目標?任何人都可以提供一些建議嗎?謝謝。

+0

您正在將RowLayout與GridData混合使用。可以使用RowData的RowLayout或GridData的GridLayout。 –

+0

當我將RowLayout更改爲GridLayout組時,它工作正常。謝謝。但我有一個問題。我添加了一個RowLayout和GridData filterComposite,但它的工作很清楚。爲什麼不爲團隊工作? – selentoptas

+0

查看Gregs的答案,混合佈局和佈局數據從不起作用。如果看起來確實如此,那麼佈局數據還沒有被評估,最終會失敗。 –

回答

1

對於作爲RowLayout一部分的控件,佈局數據必須是RowData。

所以

RowData gdData = new RowData(); 

因爲grpCompgrp

,同樣的filterComposite佈局的數據應該是RowDataRowLayout集的一部分。

您必須始終將控件的佈局數據與包含該控件的Composite的佈局進行匹配。