eclipse wizard 占空间的解决办法

wizardpage区域下部总是会有相当大的一块区域出于空白,拖动窗口减小后高度那块区域仍然存在,会挤压正常的page区域,后来通过各种设置都不能改变,这种现象的主要原因就是在wizard模板中存在有一个ProgressIndicator控件占据了该块区域,即使不显示,这块区域也会被占用在WizardDialog中,看源码

protected Control createDialogArea(Composite parent) {
  Composite composite = (Composite) super.createDialogArea(parent);
  // Build the Page container
  pageContainer = createPageContainer(composite);
  GridData gd = new GridData(GridData.FILL_BOTH);
  gd.widthHint = pageWidth;
  gd.heightHint = pageHeight;
  pageContainer.setLayoutData(gd);
  pageContainer.setFont(parent.getFont());
  // Insert a progress monitor
  progressMonitorPart= createProgressMonitorPart(composite, new GridLayout());
  GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
  progressMonitorPart.setLayoutData(gridData);
  progressMonitorPart.setVisible(false);
  // Build the separator line
  Label separator = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR);
  separator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

  applyDialogFont(progressMonitorPart);
  return composite;
 }

 效果是这样,黑框里的就是空白区域

配图
其中progressMonitorPart 就是占空间的控件,虽然源码设置成默认不可见,但他还是牢牢占了这块区域,查了一下资料有人说只能重写这段源码注掉那部分内容,想了想也太不友好了,经过尝试,发现可以在子类中得到这个控件,让他不计算位置就可以完美解决了,代码如下

 /**
	 * Overwrite the method. disable the ProgressMonitorPart which take up place on bottom of page 
	 */
	protected Control createDialogArea(Composite parent) {
		Composite composite = (Composite)super.createDialogArea(parent);
		for(Control control : composite.getChildren()){
			if(control instanceof ProgressMonitorPart){
				GridData gd = (GridData)control.getLayoutData();
				gd.exclude = true;
			}
		}
	
		return composite;
	}

 

效果如下

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值