这两天带领组员开发一个很有复杂度的界面因为组员对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 SWTBORDER); textsetLayoutData(new GridData(SWTFILL SWTCENTER true false)); final Button button = new Button(this SWTNONE); buttonsetText(button); } @Override public void dispose() { superdispose(); } } |