八进制

少年壮志无烟抽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  232 随笔 :: 0 文章 :: 3000 评论 :: 11 Trackbacks

Eclipse的Wizard是由一系列WizardPage组成的。缺省情况下,WizardDialog在初始化的时候就会调用每个WizardPage的createControl()方法来布局这些WizardPage,这是为了方便决定WizardDialog窗口的大小。但如果某个WizardPage里的控件是需要动态生成的,例如,用户在Page1里输入一个整数n,Page2里要根据这个整数生成n个文本框,由于Page2的createControl()只有一次被调用的机会,并且在得到n之前就被WizardDialog调用过了,集中布局的方式就为生成Page2的界面带来了困难。

和问题的描述比起来,解决的方法简单很多,只要覆盖Wizard的createPageControls()方法让它什么都不要做就可以了:

@Override
public void createPageControls(Composite pageContainer) {
    
//super.createPageControls(pageContainer);
}

理论上讲,这样做带来的问题将是WizardDialog的大小不一定能容纳所有的控件,但在实际应用中我还没遇到,只要动态生成的控件不要太多,或者使用滚动的方式容纳即可。

参考:http://dev.eclipse.org/newslists/news.eclipse.tools/msg02641.html

posted on 2007-06-07 15:07 八进制 阅读(2891) 评论(6)  编辑 收藏 所属分类: Eclipse

评论

#1楼  2007-06-13 21:29 jesse [未注册用户]
看了你的文章真是受益匪浅,对我们现在实验室做的开发帮助很大

看了你前面的文章,你是北大软工实验室毕业的么?我的邮箱是jesse.jz@gmail.com 希望有机会能和大牛交流

  回复  引用    

#2楼 [楼主] 2007-06-14 17:59 八进制      
一个楼不用客气,很高兴更多实验室做和eclipse有关的工作,但我不是软工的:-)
联系方式http://www.cnblogs.com/bjzhanghao/contact.aspx?id=1,在页面留email怕垃圾邮件。另外,我更希望大家在评论里问问题,这样看到的人更多。
  回复  引用  查看    

#3楼  2007-07-16 14:23 骄阳 [未注册用户]
通过重写Wizard的getNextPage方法,是不是也可以达到这个目的。
  回复  引用    

#4楼  2007-11-05 13:49 macro chen [未注册用户]
不过还有一个问题,就是在点击了next和back按钮之后,再回到当前页面的时候,希望对wizardPage的内容重新生成是无法做到的,也就是page的createControl只会调用一次,因此wizardPage生成的还是静态的,不能做到真正的"动态", 不知道到楼主如何处理的?
  回复  引用    

谢谢你的文章啊
学到了很多东西!
  回复  引用    

#6楼  2008-08-15 16:56 deagle [未注册用户]
最近在做一些eclipse插件的开发,楼主的文章给了很大的帮助,先行谢过。
但在最近的开发中遇到了一些问题,故想来咨询一下:我们目前的项目中已经创建了一个新的editor,但现在想在wizardPage中调用这个editor(在该wizardPage中预览一个文件的内容),请问这是可以实现的吗?还是editor只能在IWorkbenchPage这一层用呢?
  回复  引用