import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.util.Iterator; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriter; import javax.imageio.stream.FileImageOutputStream; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; class SpeichereComponenteALsBildClass implements ActionListener { private JPanel jpanel; private String fileName = "/Users/joecze/Desktop/SaveComponent.jpg"; public SpeichereComponenteALsBildClass() { init(); } private void init() { JFrame frame = new JFrame("Komponente als Bild"); jpanel = new JPanel(); JButton b = new JButton("Save me!"); b.addActionListener(this); jpanel.add(b); frame.setSize(300, 300); frame.add(jpanel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } private void saveCompAsImg() { // Erstelle ein BufferedImage int w = jpanel.getWidth(); int h = jpanel.getHeight(); float quality = 1f; BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics2D big2d = bi.createGraphics(); // Male das JPanel in das BufferedImage jpanel.paint(big2d); Iterator iter = ImageIO .getImageWritersByFormatName("jpeg"); ImageWriter writer = (ImageWriter) iter.next(); ImageWriteParam iwp = writer.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(quality); try { FileImageOutputStream fos = new FileImageOutputStream(new File( fileName)); writer.setOutput(fos); IIOImage img = new IIOImage((RenderedImage) bi, null, null); writer.write(null, img, iwp); } catch (Exception ex) { ex.printStackTrace(); } } public void actionPerformed(ActionEvent e) { saveCompAsImg(); } public static void main(String args[]) { SwingUtilities.invokeLater(() -> new SpeichereComponenteALsBildClass()); } }