這兩天
帶領組員開發一個很有復雜度的界面
因為組員對SWT的Layout不是很熟悉
所以在界面先後出現了很多問題
有的時候是出現異常
因為Layout和LayoutData不匹配
有時候是顯示不出畫面
總是
能產生的問題基本都碰到了
目前的開發思路是先用SWT Designer畫界面
然後再手工重構整理
SWT Designer對於重構後的代碼便不能再識別了
所以僅僅依靠可視化工具是不行的
還要對SWT界面編碼非常熟悉
所以對於SWT Layout的掌握就至關重要
在制作自己的Composite時
一定要注意
外面傳入的Composite 一定只用一次
就是在super(parent
style);的時候用
以後自己的所有控件的父親都是此Composite本身
不要在其他任何地方使用parent了
否則的話
很有可能干擾parent中的內容
造成自身和parent裡面其他控件顯示錯誤
每個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
true
false));
final Button button = new Button(this
SWT
NONE);
button
setText(
button
);
}
@Override
public void dispose()
{
super
dispose();
}
}
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27777.html