SWT Layout 的注意项
来源:互联网 发布:网络h十是什么意思啊 编辑:程序博客网 时间:2024/06/13 23:01
这两天,带领组员开发一个很有复杂度的界面,因为组员对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)。
下面是一段源码,推荐按照这种方式构建界面。
目前的开发思路是先用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, true, false));
final Button button = new Button(this, SWT.NONE);
button.setText("button");
}
@Override
public void dispose() {
super.dispose();
}
}
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();
}
}
- SWT Layout 的注意项
- SWT Layout 的注意项
- SWT Layout 的注意项
- SWT Layout 的注意项
- SWT Layout 的注意项
- SWT Layout 的注意项
- SWT Layout
- swt 多线程注意的问题
- SWT绘图需要注意的一个问题
- SWT中的Layout总结
- SWT Layout 使用场景
- SWT Layout 使用场景
- SWT Layout 使用场景
- SWT Layout 使用场景
- SWT Layout 使用场景
- SWT Layout 浏览
- java SWT:最有效的layout方法Control.requestLayout()
- 打包eclipse swt程序需要注意的几点事项
- 使用 Web service 的站点列表
- How to undo pending changes by others铪铪铪铪铪铪铪
- 在TableViewer中使用ITableColorProvider
- [概念] 质量规划工具 - Affinity Diagram
- 中间人攻击,也谈Firefox/Google Toolbar最新的安全漏洞
- SWT Layout 的注意项
- Two informative resources: Tooltips and CSS tips
- Chapter 1 初見 EJB3.0 (1)
- ASP 开发准则
- 使用TreeViewer取代TableTreeViewer
- Project Management 101 lessons
- WCF security 学习指南
- 英文里面的反意疑问句的回答
- 消除主页浏览器差异的一些基本要点