2017-02-23 68 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

相关问题