有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaGMF以编程方式创建连接,而不使用命令

嗨,我正在用GMF开发一个图形编辑器,希望在初始化一个新的图表时创建一组节点(我项目中的资源)和它们之间的连接。我不想在这里使用命令,因为在我看来,如果没有代码,它会更精简、更容易阅读,而且速度更快

通过调用myXXXFactory.eInstance.createResource()并将它们添加到关系图模型中来创建节点没有问题。我的连接作为source-/targetConnections特性包含在资源类中。因此,我在资源中添加了一个类似创建的连接作为源/目标。但它不会显示在图表中,即使它存在于ResourceImpl结构特性中。也许我需要将它添加到图表中,但由于它包含在图表中的一个特性中,我不知道如何添加

我是否做错了什么或遗漏了什么,或者没有命令就无法做到这一点?任何帮助都将不胜感激。下面是示例代码。它的输出是两个节点,但没有连接

谢谢,拉尔斯

createInitialModel方法示例:

private static RDFEditor.ShapesDiagram createInitialModel() {

  ShapesDiagram diagram = >RDFEditor.RDFEditorFactory.eINSTANCE.createShapesDiagram();
  RDFEditor.Resource res = RDFEditorFactory.eINSTANCE.createResource();
  RDFEditor.Resource res2 = RDFEditorFactory.eINSTANCE.createResource();
  Connection con = RDFEditorFactory.eINSTANCE.createConnection();

  EStructuralFeature target = >res.eClass().getEStructuralFeature("targetConnections");
  EStructuralFeature source = >res.eClass().getEStructuralFeature("sourceConnections");

  res2.setName("rdfs:Resource");
  res.setName("rdfs:Class");
  con.setName("rdfs:type");

  con.setSource(res);
  con.setTarget(res2);

  res.getSourceConnections().add(con);
  res.getTargetConnections().add(con);    


  //res2.eSet(target, con);   
  //res.eSet(source, con);

  List<? extends Shape> resList = Arrays.asList(res,res2);

  EStructuralFeature shapes = >diagram.eClass().getEStructuralFeature("shapes");
  diagram.eSet(shapes, resList);

  return diagram;

}


共 (0) 个答案