代码之家  ›  专栏  ›  技术社区  ›  user4661913

UMLet中的UML2序列图符号?

  •  1
  • user4661913  · 技术社区  · 10 年前

    我想知道是否有任何可能在UMLet中表示序列图的UML2边界/控制/实体符号?( http://www.uml.org.cn/oobject/images/seq02.gif )

    我必须自己编写他们的java代码吗?还是它已经存在于某个地方?

    3 回复  |  直到 10 年前
        1
  •  1
  •   Noah    9 年前

    这是我用来在UMLet中创建边界符号的代码段。您可以根据需要进行更改。

    int h = height - textHeight() * textlines.size();
    int radius = h/2;
    drawCircle(width-radius, radius, radius);
    drawLine(0, 10, 0, h-10);
    drawLine(0, radius, width-h, radius);
    
    int y = textHeight()+5;
    for(String textline : textlines) {
        printCenter(textline, height-3);
    }
    

    预览:

    enter image description here

        2
  •  0
  •   Peter Uhnak    9 年前

    我不确定你指的是序列还是序列一体。

    虽然不支持这些新的生命线,但您可以很容易地向前者添加自定义元素。这里有一个如何添加新元素的简单教程 http://www.umlet.com/ce/ce.htm

    如果要将其添加到一体机中,则需要深入了解其内部,因为它还需要对文本解析器进行更改。

        3
  •  0
  •   user4661913 user4661913    9 年前

    所以我在诺亚的基础上做了一些模型。它远不是一个专业的东西,而且是相当肮脏的代码,但我想它在一段时间内起到了作用。因此,如果有人在UMLet中更好地实现这些符号之前遇到了与我相同的问题:

    实体:

    int h = height - textHeight() * textlines.size();
    int radius = h*2/5;
    int w = radius*2 ;
    
    double x = (width - w)/2 + radius ;
    double y = h/10 + radius;
    
    double x2 = x + radius/4 * Math.sqrt(3);
    double y2 = y - radius/4 ;
    
    drawCircle((int)x, (int) y, radius);
    drawLine((int)x-radius , (int)y + radius  ,  (int) x+ radius, (int) y+radius);
    drawLine((int)x - radius , (int) y - 2*radius  , (int) x + radius, (int) y - 2*radius);
    
    for(String textline : textlines) {
        printCenter(textline, h);
    }
    

    控制:

        int h = height - textHeight() * textlines.size();
    int radius = h*2/5;
    int w = radius*2 ;
    
    double x1 = (width - w)/2 + radius ;
    double y1 = h/10;
    
    double x2 = x1 + radius/4 * Math.sqrt(3);
    double y2 = y1 - radius/4 ;
    
    double x3 =  x1 +  radius/4 * Math.sqrt(3);
    double y3 =  y1 + radius/4;
    
    drawCircle((int)x1, (int) y1+radius, radius);
    drawLine((int)x1, (int) y1 , (int)x2, (int)y2);
    drawLine((int)x1, (int) y1 , (int)x3, (int)y3);
    
    int y = textHeight()+5;
    
    for(String textline : textlines) {
        printCenter(textline, h);
    }