Wenn man etwas mit Swing in ein Graphics2D
zeichnet, kann man das in eine JComponent
reinzeichnen und dann einen Screenshot machen. Manchmal ist es aber praktischer, das ganze als Vektorgraphik zur Verfügung zu haben. Apache Batik bietet alles, was dafür notwendig ist: Man kann in ein SVGGraphics2D
zeichnen, und das dann als SVG abspeichern.
Ein paar kleine Utility-Funktionen hierfür sind in der https://github.com/javagl/SvgGraphics - Library zusammengefasst. Damit kann man z.B. mit
SVGGraphics2D g = SvgGraphics.create();
someJComponent.printAll(g);
SvgGraphicsWriter.save(g);
eine JComponent
komplett in eine (vom Benutzer ausgewählte) SVG-Datei speichern.
Das ganze liegt in der Maven Central:
<dependency>
<groupId>de.javagl</groupId>
<artifactId>svg-graphics</artifactId>
<version>0.0.2</version>
</dependency>
Für kleine, lokale Tests kann man auch eine der releases runterladen, wo die library mit allen dependencies als shaded JAR angeboten wird. (Die enthält Klassen von Apache Batik, und steht unter der Apache License 2.0).