Originariamente inviato da Snake17x
Ciao ragazzi girando su internet ho trovato questa classe


codice:
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.awt.Dimension;
import java.awt.*;

import javax.imageio.ImageIO;

public class RobotExp {
    
    public static void main(String[] args) {
        
        try {
            
            Robot robot = new Robot();
            // Capture the screen shot of the area of the screen defined by the rectangle
			Dimension screen = 	Toolkit.getDefaultToolkit().getScreenSize();
            BufferedImage bi=robot.createScreenCapture(new Rectangle(800,800));
            ImageIO.write(bi, "jpg", new File("graphics1.jpg"));
            
        } catch (AWTException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Vorrei che al posto di fare lo screenshot dell'intero Desktop, facesse lo screenshot di un JFrame è possibile? Ci ho provato in diversi modi ma mi sono dannato senza risultati.

Credo che la parte da modificare sia:
codice:
Dimension screen = 	Toolkit.getDefaultToolkit().getScreenSize();
O sbaglio? Ma come faccio a passargli il JPANEL piuttosto che lo screensize?
Sia JFrame che JPanel sono sottoclassi di Component che ha il metodo getBounds (senza parametri), il quale ti fornisce le coordinate che comprendono l'area dello schermo occupata dal componente; ottenute queste (te le restituisce sotto forma di Rectangle) usale per fare lo screen come nell'esempio che hai postato.