Make a print screen of my Java application

How can I make a print screen of my java application?

saveScreen.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ... } }); 
+4
source share
2 answers

I will give another method, it will print the Component that you passed:

 private static void print(Component comp) { // Create a `BufferedImage` and create the its `Graphics` BufferedImage image = GraphicsEnvironment.getLocalGraphicsEnvironment() .getDefaultScreenDevice().getDefaultConfiguration() .createCompatibleImage(comp.getWidth(), comp.getHeight()); Graphics graphics = image.createGraphics(); // Print to BufferedImage comp.paint(graphics); graphics.dispose(); // Output the `BufferedImage` via `ImageIO` try { ImageIO.write(image, "png", new File("Image.png")); } catch (IOException e) { e.printStackTrace(); } } 

You need at least

 import java.awt.Component; import java.awt.Graphics; import java.awt.GraphicsEnvironment; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; 

To prevent EDT blocking, ImageIO.write should not be called on EDT, so replace the try - catch as follows:

  new SwingWorker<Void, Void>() { private boolean success; @Override protected Void doInBackground() throws Exception { try { // Output the `BufferedImage` via `ImageIO` if (ImageIO.write(image, "png", new File("Image.png"))) success = true; } catch (IOException e) { } return null; } @Override protected void done() { if (success) { // notify user it succeed System.out.println("Success"); } else { // notify user it failed System.out.println("Failed"); } } }.execute(); 

And one more thing to import:

 import javax.swing.SwingWorker; 
+6
source

Here is an example of how you can capture a screen:

 Robot robot = new Robot(); Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); BufferedImage capture = robot.createScreenCapture(screenRect); 

Then just pass the BufferedImage to the stream, which writes its contents to the file.

+4
source

Source: https://habr.com/ru/post/1488845/


All Articles