2017-02-23 70 views
1

我有一個類創建了多個控件,但類本身不是一個複合或小部件。這些控件的佈局都是new GridLayout(1, false)。我不確定我是否可以定義類級別GridLayout變量,並將其用於所有控件?下面是代碼示例在不同控件之間共享佈局實例是否安全

public void createControl(Composite parent) { 
    parent.setLayout(new GridLayout(1, false)); 

    Composite comp1 = new Composite(parent, SWT.NONE); 
    comp1.setLayout(new GridLayout(1, false); 

    Composite comp2 = new Composite(parent, SWT.NONE); 
    comp2.setLayout(new GridLayout(1, false); 

    // ... other stuff 
} 

正如你看到這裏,我創建了三個相同的GridLayout實例。我可以爲所有這些控件使用一個班級級的考試嗎?任何安全問題或性能缺陷?

+0

順便說一句,我通常重新使用GridLayout和我的代碼中的一些其他資源,到目前爲止我沒有遇到任何問題。但不要指望對共享資源進行更改會改變所有先前收到它的控制/窗口小部件。 –

回答

1

SWT並沒有真正說出重用佈局對象是否安全,因此您應該認爲它不安全。

從代碼的外觀來看,GridLayout可能是可重複使用的,但每個Composite使用新佈局的代價非常小,所以我沒有嘗試過。

或者您可以使用GridLayoutFactory定義一個標準的佈局,可應用於多種複合材料:

GridLayoutFactory factory = GridLayoutFactory.swtDefaults(); 

factory.applyTo(comp1); 

factory.applyTo(comp2); 

這絕對是安全重用GridData,必須有各控制一個單獨的GridData對象。

+0

非常感謝 – CMZS

相關問題