嘟嘟

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            26 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

          XYLayout: 子圖形可以在上面隨意改變大小和位置

          1: 父EditPart中添加布局管理器
          public class ContentsEditPart extends AbstractGraphicalEditPart {

           protected IFigure createFigure() {
               Layer figure  = new Layer();  //圖層
               figure.setLayoutManager(new XYLayout());
               return figure;
           }
             ......
          }

          2: 為子模型添加約束Constraint

          為了使用XYLayout,需要設置被該布局管理器管理的圖形對象的尺寸和位置(約束Constraint), 對圖形集ContentsModel 中的每個圖形都要添加約束,約束被添加到他們的模型類中.
          public class HelloModel {
              private String text = "Hello world";
              private Rectangle constraint;
                ...
              public Rectangle getConstraint() {
                  return constraint;
              }

              public void setConstraint(Rectangle constraint) {
                  this.constraint = constraint;
              }
          }
          3: 在子EditPart中把約束施加給圖形.
          public class HelloEditorPart extends AbstractGraphicalEditPart {
                ...
             protected void refreshVisuals() {
                  Rectangle constraint = ((HelloModel)getModel()).getConstraint();
                  ((GraphicalEditPart)getParent()).setLayoutConstraint(this,getFigure(),constraint);
              }
                ...
          }
          4: 繪制帶約束的圖形
          public class DiagramEditor extends GraphicalEditor {
                ...
              protected void initializeGraphicalViewer() {
            
                  viewer = getGraphicalViewer();
                  ContentsModel parent = new ContentsModel(); //父模型
            
                  HelloModel child1=new HelloModel(); //子模型
                  child1.setConstraint(new Rectangle(0,0,-1,-1)); //添加約束
                  parent.addChildren(child1);
            
                  HelloModel child2=new HelloModel();
                  child2.setConstraint(new Rectangle(30,30,-1,-1));
                  parent.addChildren(child2);
            
                  HelloModel child3=new HelloModel();
                  child3.setConstraint(new Rectangle(10,80,80,50));
                  parent.addChildren(child3);
            
                  viewer.setContents(parent);
              }
          ...
          }

          代碼: 下載

          posted on 2007-05-09 18:15 fyp1210 閱讀(1505) 評論(0)  編輯  收藏 所屬分類: GEF
          主站蜘蛛池模板: 孝昌县| 民县| 湾仔区| 仁布县| 永济市| 大悟县| 文登市| 襄汾县| 左权县| 英吉沙县| 光泽县| 静安区| 固镇县| 张家口市| 微博| 德庆县| 高安市| 社会| 临澧县| 蚌埠市| 姚安县| 济阳县| 宾川县| 厦门市| 蓬安县| 永泰县| 邓州市| 沾益县| 斗六市| 龙海市| 醴陵市| 噶尔县| 宣化县| 虎林市| 瑞昌市| 灌南县| 澳门| 汉川市| 高碑店市| 东阳市| 朝阳市|