API рисования UML для Java

Я ищу API-интерфейсы, которые могут рисовать диаграммы классов UML и представлять их в JPanel (или любой другой подходящий объект пользовательского интерфейса) для оконного приложения. Он должен быть встроен в приложение, поэтому я не ищу какой-то автономный инструмент, который может генерировать UML на основе файлов java или какого-либо плагина. Мне нужны настоящие jar-файлы, которые можно реализовать для создания диаграмм классов, чтобы я мог использовать их в оконном приложении. Я изучил несколько, но все источники, которые я нахожу, являются либо автономными программами, либо не могут быть реализованы в приложении и должны отвлекать внимание пользователя от приложения. Я использую среду IDE NetBeans, но у меня также установлен Eclipse.

РЕШЕНО:

Я использовал PlantUML API. Я вручную ввожу строку в соответствии с синтаксисом языка ввода PlantUML, а затем использовал простой и понятный метод generateImage для заполнения массива байтов, который затем преобразовывал в изображение и сохранял на своем рабочем столе. Это соответствует тому, что я хотел, потому что позволяет пользователю сосредоточиться на моем приложении и только на моем. В качестве альтернативы можно создать буферизованное изображение в окне или что-то в этом роде. API PlantUML необходимо импортировать в пакет приложения. Этот код создает изображение на моем рабочем столе (не забудьте изменить путь к каталогу) с изображением класса 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);
}
}

person user1028408    schedule 19.02.2013    source источник
comment
Вы видели PlantUML? plantuml.sourceforge.net Это открытый исходный код, так что вы можете выбрать некоторые подходящие элементы.   -  person Paolo    schedule 19.02.2013
comment
По совпадению я изучаю это прямо сейчас. Я думаю, что это именно то, что мне нужно, но также немного неясно, как я могу использовать API в моей программе (отсутствие документации).   -  person user1028408    schedule 20.02.2013
comment
Хорошо, я сделал это, я собираюсь отредактировать вопрос, чтобы вставить ответ. Вы можете оставить свой комментарий в качестве ответа, чтобы я мог принять его как правильный? Спасибо :)   -  person user1028408    schedule 20.02.2013


Ответы (2)


Вы видели PlantUML?

http://plantuml.sourceforge.net

Это открытый исходный код, поэтому вы можете выбрать несколько подходящих элементов.

person Paolo    schedule 20.02.2013

Взгляните на Eclipse UML2 API и Папирус Затмения. Они должны обеспечивать ту функциональность, которую вы ищете. Для поддержки рисования в JPanels вам может потребоваться дополнительная работа.

Eclipse UML2 API предоставляет интерфейс Java для метамодели UML2. Papyrus - это набор компонентов, позволяющий создавать диаграммы и графические редакторы для моделей UML.

person SpaceTrucker    schedule 19.02.2013
comment
Меня больше интересует поддержка рисования, чем что-либо еще. Я пробовал использовать SVGSalamander, но когда я попробовал программу-пример, она у меня не сработала. Я разместил об этом отдельный вопрос, но мне пока никто не помог: stackoverflow.com/questions/14936597/ Я бы предпочел использовать SVGSalamander как часть приложения, чем полагаться на инструмент IDE, такой как Papyrus. Приложение должно быть устанавливаемым и используемым независимо от Eclipse / NetBeans или других отдельных приложений. - person user1028408; 19.02.2013
comment
Наличие редактора диаграмм может оказаться довольно сложной задачей. Поэтому я рекомендую опираться на что-то уже существующее. Вы не обязаны создавать приложение rcp для использования этих компонентов. Вы также можете использовать их в фоновом режиме своего приложения Swing или чего-то еще. Но вам придется использовать osgi. - person SpaceTrucker; 19.02.2013
comment
Я хочу, чтобы все, что я использую, можно было вызывать с помощью кода Java. Я хочу, чтобы диаграмма классов UML была сгенерирована в качестве последнего шага в серии других процедур в программе Java. Важно то, что пользователю не придется ничего делать вручную, чтобы получить такой результат. Как вы думаете, можно ли встроить что-то вроде PaintUML с osgi? - person user1028408; 19.02.2013