4

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

解决了:

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

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);
}
}
4

2 回答 2

3

你见过PlantUML吗?

http://plantuml.sourceforge.net

它是开源的,所以你可以选择一些适合的。

于 2013-02-20T10:34:04.520 回答
1

看看Eclipse UML2 APIEclipse Papyrus。他们应该提供您正在搜索的功能。对于 JPanel 中的绘图支持,您可能需要做一些额外的工作。

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

于 2013-02-19T10:33:23.133 回答