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を見てください。それらは、あなたが探している機能を提供する必要があります。JPanels で描画をサポートするには、追加の作業が必要になる場合があります。

Eclipse UML2 API は、UML2 メタ モデル用の Java インターフェースを提供します。Papyrus は、UML モデルのダイアグラムとグラフィカル エディターを構築できるコンポーネントのセットです。

于 2013-02-19T10:33:23.133 に答える