嘟嘟

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            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,需要設(shè)置被該布局管理器管理的圖形對象的尺寸和位置(約束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 閱讀(1508) 評論(0)  編輯  收藏 所屬分類: GEF

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 泗洪县| 镇沅| 屯门区| 忻城县| 金门县| 阿合奇县| 昌吉市| 浦东新区| 平昌县| 巴南区| 类乌齐县| 喀喇| 正宁县| 鄂州市| 依安县| 长宁区| 吐鲁番市| 红原县| 铜陵市| 肥乡县| 泸西县| 宁海县| 台江县| 安吉县| 独山县| 和龙市| 聂荣县| 高邑县| 赣榆县| 开平市| 津南区| 彰武县| 内黄县| 河池市| 平凉市| 安西县| 邛崃市| 罗山县| 星子县| 呼伦贝尔市| 东乌珠穆沁旗|