Hallo Freunde,
bin relativer Neuling in sachen Programmieren und habe für den Betrieb ein kleines Tool geschrieben das Komponentenabhängigkeiten grafisch darstellen soll...
Dies alles wird in einem Frame gemacht und es besteht die Möglichkeit das dargestellte per JPG abzuspeichern.
In meiner Entwicklungsumgebung funktioniert alles sehr gut, das speichern ist kein Problem...
Wenn ich das Programm allerdings exportiere und als Executable.Jar starte funktioniert das abspeichern als Bild nicht mehr...
Erst hab ich alle absoluten Pfade zu Relativen gemacht, da ich dachte es liegt daran, dem war aber nicht so..
Ich poste hier mal die Methode und hoffe jemand kann mir helfen, ich selbst finde den Fehler leider nicht...
Vielen Dank schon einmal und Liebe Grüße!
bin relativer Neuling in sachen Programmieren und habe für den Betrieb ein kleines Tool geschrieben das Komponentenabhängigkeiten grafisch darstellen soll...
Dies alles wird in einem Frame gemacht und es besteht die Möglichkeit das dargestellte per JPG abzuspeichern.
In meiner Entwicklungsumgebung funktioniert alles sehr gut, das speichern ist kein Problem...
Wenn ich das Programm allerdings exportiere und als Executable.Jar starte funktioniert das abspeichern als Bild nicht mehr...
Erst hab ich alle absoluten Pfade zu Relativen gemacht, da ich dachte es liegt daran, dem war aber nicht so..
Ich poste hier mal die Methode und hoffe jemand kann mir helfen, ich selbst finde den Fehler leider nicht...
Java:
import org.jgraph.JGraph;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.FileImageOutputStream;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
public class Paintmethod {
//wird aufgerufen zum Speichern eines JPG-Files
public static void male(JScrollPane grafikPanel, JGraph graph, int mouseX, int mouseY, int mouseX2, int mouseY2) {
File startfile = new File("C:\\");
FileFilter jpgFilter = new FileNameExtensionFilter("jpg-format", "jpg");
JFileChooser saver = new JFileChooser();
saver.addChoosableFileFilter(jpgFilter);
saver.setCurrentDirectory(startfile);
String fileName = "";
int result = saver.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
fileName = saver.getSelectedFile().getPath();
}
float quality = 1f;
grafikPanel.setPreferredSize(new Dimension(mouseX2, mouseY2));
BufferedImage bi = new BufferedImage(grafikPanel.getWidth() + 10000, grafikPanel.getHeight() + 10000, BufferedImage.TYPE_INT_RGB);
Graphics2D big2d = bi.createGraphics();
big2d.setColor(Color.WHITE);
graph.paint(big2d);
bi = bi.getSubimage(mouseX, mouseY, mouseX2 - mouseX, mouseY2 - mouseY);
FileNameExtensionFilter filter = (FileNameExtensionFilter) saver.getFileFilter();
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName(filter.getExtensions()[0]);
ImageWriter writer = (ImageWriter) iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(quality);
if (!saver.getFileFilter().accept(new File(fileName))) {
fileName += "." + filter.getExtensions()[0];
}
FileImageOutputStream fos = null;
try {
fos = new FileImageOutputStream(new File(fileName));
writer.setOutput(fos);
IIOImage img = new IIOImage((RenderedImage) bi, null, null);
writer.write(null, img, iwp);
fos.close();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
}
}
}
big2d.dispose();
graph.setSelectionEnabled(true);
}
}
Vielen Dank schon einmal und Liebe Grüße!
Zuletzt bearbeitet von einem Moderator: