Я ищу 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);
}
}