SWT Layout 的注意項

SWT Layout 的注意項

     這兩天,帶領組員開發一個很有複雜度的界面,因爲組員對SWT的Layout不是很熟悉,所以在界面先後出現了很多問題。有的時候是出現異常,因爲Layout和LayoutData不匹配,有時候是顯示不出畫面。總是,能產生的問題基本都碰到了。
      目前的開發思路是先用SWT Designer畫界面,然後再手工重構整理,SWT Designer對於重構後的代碼便不能再識別了。所以僅僅依靠可視化工具是不行的,還要對SWT界面編碼非常熟悉。所以對於SWT Layout的掌握就至關重要。
    在製作自己的Composite時,一定要注意:
1  外面傳入的Composite 一定只用一次,就是在super(parent, style);的時候用,以後自己的所有控件的父親都是此Composite本身。不要在其他任何地方使用parent了。否則的話,很有可能干擾parent中的內容,造成自身和parent裏面其他控件顯示錯誤。

2  每個Composite容器一定都要設置Layout,否則可能會顯示不出東西。一般來說都是設置GridLayout, 如果Composite本身就放置一個控件,比如說就放置一個Table,那麼也可以用FillLayout。對於新手來說,推薦全部使用 GridLayout,否則容易出現Layout和LayoutData不匹配的情況,而且如果界面很複雜的話,問題是很難找到的。GridLayout 完全可以替代其他Layout,實現各種需求(如果有控件重疊的情況,就不行了,就要使用FormLayout)。
下面是一段源碼,推薦按照這種方式構建界面。

 

public class TestComposite extends Composite ...{

    
private Text text;
    
/** *//**
     * Create the composite
     * 
@param parent
     * 
@param style
     
*/

    
public TestComposite(Composite parent, int style) ...{
        
super(parent, style);
        setLayout(
new GridLayout());
        createArea(
this);
    }

    
private void createArea(Composite parent)...{
        text 
= new Text(this, SWT.BORDER);
        text.setLayoutData(
new GridData(SWT.FILL, SWT.CENTER, truefalse));

        
final Button button = new Button(this, SWT.NONE);
        button.setText(
"button");
    }

    
    @Override
    
public void dispose() ...{
        
super.dispose();
    }

}

 


  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章