bonjour,
je souhaite faire une capture de la frame que j ai en cours d utilisation, sans avoir tout ce qu'il y a autour ..
La capture se fait bien, mais je n'ai qu'une partie de ma fenetre, et ce a cause de ma jScrollPane.
Est ce possible de capturer toute la jScrollPane, et non uniquement la partie visible ?
Le code est le suivant :
[code]
public Image getImage(Component component)
{
if(component==null)
return null;
int width = component.getWidth();
int height = component.getHeight();
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
component.paintAll(g);
g.dispose();
return image;
}
BufferedImage toBufferedImage(Image image) {
/** On test si l'image n'est pas déja une instance de BufferedImage */
if( image instanceof BufferedImage ) {
/** cool, rien à faire */
return( (BufferedImage)image );
} else {
/** On s'assure que l'image est complètement chargée */
image = new ImageIcon(image).getImage();
/** On crée la nouvelle image */
BufferedImage bufferedImage = new BufferedImage(
image.getWidth(null),
image.getHeight(null),
BufferedImage.TYPE_INT_RGB );
Graphics g = bufferedImage.createGraphics();
g.drawImage(image,0,0,null);
g.dispose();
return( bufferedImage );
}
}
private void jDesktopPane1MouseClicked(java.awt.event.MouseEvent evt)
{
if (evt.getButton() == 3)
{
try
{
String chemin = System.getProperty("user.home") + System.getProperty("file.separator")
+ "Pervilla" + System.getProperty("file.separator") +
"genealogie_" + CurrentUser.getInstance().getCurrentUser().getEtatCivil().getNom() + "-" +
CurrentUser.getInstance().getCurrentUser().getEtatCivil().getPrenom() + ".png";
File f = new File(chemin);
BufferedImage image = toBufferedImage(getImage(this.getComponent(0)));
ImageIO.write(image, "png", f);
}
catch (Exception e)
{
System.out.println("ERROR DAMARDE");
}
}
}
[/code]