Tabbed Property Section-动态组件部分

Tabbed Property Section: 动态组件展示

先看一下效果图:

下拉框不做任何选择:

选择List1:

选择List2:

<!-- [if gte mso

图中用到的两个 list:

<!-- [if gte mso 10]>

解决方案

  1. createControls ()方法中创建一个空 Composite (没有任何子组件)
  2. 对下拉框组件添加 SelectionListener
  3. SelectionListener 中,首先清除 Composite 中的字组件:
    		Control[] tes = composite.getChildren();
    			for (Control control : tes) {
    				control.dispose();
    		}
    
  4. 然后根据下拉框的选择,获取 list (所要创建的组件都在 List 中),根据 list 中的对象创建相应的组件。(对象中可以包含所要创建的对象类型,如上面的 LabelValue 中使用一个 int 类型的 type 变量指定所要创建组件的类型, 1 :表示 Label 2 :表示文本框)
  5. 创建对象完成后,要使用 layout ()方法强制 Composite 重新布局组件。

 

		Composite tmp = composite;
			for (int i = 0; i < 20 && tmp != null; i++) {
				tmp.layout();
				tmp.redraw();
				tmp = tmp.getParent();
		}

 

 

注意:上面使用 20 作为循环次数的一个上限,在实际应用中这个循环次数是可以确定的(一般是 parent 对象的上两层),为了简便,直接使用 20 Composite 的层数一般不会超过 20 ,在应用中尽量减小该数值,这样会节省时间并且不会造成图像闪动,在一些开源代码中有使用 20 作为上限的)。

 

 

具体请参考附件(zip )。

 

 

 

你可能感兴趣的:(动态组件)