Je l'ai fait avec succès auparavant, mais maintenant après avoir exécuté le programme de nombreuses fois l'échec vient à la capture d'écran est trop rapide. Et il ne prendra pas l'image correcte, il le prend que le jframe est en train de disparaître. Comment puis-je résoudre ce problème?Comment capturer une image à partir d'une jfame? (Trop rapide)
Edit: Donc, fondamentalement, je suis en train de capturer l'image des JPanels à l'intérieur du JFrame, mais dans le processus de le faire en l'appelant sur l'image d'une macro Excel capturée se révèle être celui ci-dessus au lieu de l'image dont j'ai besoin.
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class TimeTableGraphicsRunner extends JFrame
{
public TimeTableGraphicsRunner()
{
getContentPane().setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
}
public void load(TimeTablePanel pan)
{
pan.setTitle(x.getTitle(TimeTable.titleCount));
getContentPane().add(pan);
}
public void run()throws Exception
{
System.out.println("Creating image in panel");
//setSize(TimeTable.width,TimeTable.height);
getContentPane().setPreferredSize(new java.awt.Dimension(TimeTable.width,TimeTable.height));
pack();
setVisible(true);
System.out.println("Image is in panel");
grabScreenShot();
System.out.println("Cleaning up");
setVisible(false);
System.out.println("Finished");
System.exit(0);
}
private void grabScreenShot() throws Exception
{
BufferedImage image = (BufferedImage)createImage(getContentPane().getSize().width,getContentPane().getSize().height);
getContentPane().paint(image.getGraphics());
try{
ImageIO.write(image, "png", new File("C:\\Users\\"+TimeTable.user+"\\AppData\\TimeLineMacroProgram\\TimeLine.png"));
System.out.println("Image was created");
}
catch (IOException e){
System.out.println("Had trouble writing the image.");
throw e;
}
}
}
huh? est-ce que vous avez soin d'élaborer ou de fournir du code? au fait, à quoi sert la capture d'écran? – mre
Si la capture d'écran est trop rapide pourquoi ne pas dormir (1000) dans le sujet avec lequel vous prenez des captures d'écran? Aussi, avez-vous regardé 'java.awt.Robot'? –
['SwingUtilities.invokeAndWait (...)'] (http://download.oracle.com/javase/6/docs/api/javax/swing/SwingUtilities.html#invokeAndWait%28java.lang.Runnable%29) Cela peut s'avérer utile, mais nous avons vraiment besoin d'une élaboration, sinon nous resterons tous dans le noir. – mre