面向Java的UML绘图API

面向Java的UML绘图API,java,drawing,uml,plantuml,Java,Drawing,Uml,Plantuml,我正在寻找可以绘制UML类图并在JPanel(或任何其他合适的UI实体)中为窗口应用程序呈现它们的API。它必须嵌入到应用程序中,所以我不想寻找一些独立的工具,可以基于java文件或一些插件生成UMLs。我需要实际的JAR,可以用来创建类图,这样我就可以在窗口应用程序中使用它们。我已经研究了几个,但我发现的所有来源要么是独立的程序,要么无法在应用程序中实现,需要将用户的注意力从应用程序中移开。我正在使用NetBeans IDE,但我也安装了Eclipse 已解决: 我使用了PlantUMLAPI

我正在寻找可以绘制UML类图并在JPanel(或任何其他合适的UI实体)中为窗口应用程序呈现它们的API。它必须嵌入到应用程序中,所以我不想寻找一些独立的工具,可以基于java文件或一些插件生成UMLs。我需要实际的JAR,可以用来创建类图,这样我就可以在窗口应用程序中使用它们。我已经研究了几个,但我发现的所有来源要么是独立的程序,要么无法在应用程序中实现,需要将用户的注意力从应用程序中移开。我正在使用NetBeans IDE,但我也安装了Eclipse

已解决:

我使用了PlantUMLAPI。我根据PlantUML输入语言语法手动输入一个字符串,然后使用简单而直接的generateImage方法填充一个字节数组,然后将其转换为一个图像并保存到桌面上。这符合我的要求,因为它让用户只关注我的应用程序和我的应用程序。或者,可以在窗口或其他地方生成缓冲图像。PlantUML API需要导入到应用程序包中。这段代码在我的桌面上创建了一个映像(别忘了更改目录路径),其中包含类的UML类映像,Person:

public class PaintUML {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException, InterruptedException {
    // TODO code application logic here
    ByteArrayOutputStream bous = new ByteArrayOutputStream();
    String source = "@startuml\n";
    source += "class Person {\n";
    source += "String name\n";
    source += "int age\n";
    source += "int money\n";
    source += "String getName()\n";
    source += "void setName(String name)\n";
    source += "}\n";
    source += "@enduml\n";

    SourceStringReader reader = new SourceStringReader(source);
    // Write the first image to "png"
    String desc = reader.generateImage(bous);
    // Return a null string if no generation
    byte [] data = bous.toByteArray();

    InputStream in = new ByteArrayInputStream(data);
    BufferedImage convImg = ImageIO.read(in);

    ImageIO.write(convImg, "png", new File("C:\\Users\\Aaron\\Desktop\\image.png"));

    System.out.print(desc);
}
}
看一下和。它们应该提供您正在搜索的功能。对于JPanels中的绘图支持,您可能需要做一些额外的工作


EclipseUML2API为UML2元模型提供了Java接口。Papyrus是一组组件,允许为UML模型构建图表和图形编辑器。

您见过PlantUML吗


它是开源的,所以你可以选择一些适合自己的东西

我对绘图支持比其他任何东西都感兴趣。我尝试过使用SVGSalamander,但是当我尝试示例程序时,它对我不起作用。我发布了一个关于它的单独问题,但还没有人帮助我:我更愿意将SVGSalamander作为应用程序的一部分使用,而不必依赖Papyrus这样的IDE工具。该应用程序必须是可安装和可用的,不依赖于Eclipse/NetBeans或其他独立的应用程序。拥有一个图表编辑器可能是一项相当复杂的任务。因此,我建议建立在已有的基础上。您不必构建rcp应用程序来使用这些组件。你也可以将它们嵌入swing应用程序的后台或其他任何地方。但是您将被迫使用osgi,我希望最终使用的任何东西都可以通过Java代码调用。我希望UML类图作为Java程序中一系列其他过程的最后一步生成。重要的是,用户无需手动执行任何操作即可获得此结果。你认为有可能在osgi中嵌入像PaintUML这样的东西吗?你见过PlantUML吗?它是开源的,所以你可以选择一些适合的东西。巧合的是,我现在正在研究它。我想这正是我所需要的,但关于如何在我的程序中使用API(缺少文档),这也有点含糊不清。好的,我做到了,我将编辑问题,把答案放进去。你能把你的评论作为回答,这样我就可以接受它是正确的吗?谢谢:)