Capture Swing par mail en mode console (Linux)
Bonjour,
Je souhaiterai envoyé par mail une capture d'un JPanel, via une crontab, donc idéalement sans environnement graphique. Le but est en fait de ne pas doublé un développement.
Voici le code qui me permet de récupérer l'image (dataMonitoringPanel est initialisé avant et hérite de Jpanel)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
JFrame jFrame = new JFrame();
jFrame.setLayout(new BorderLayout());
jFrame.add(dataMonitoringPanel);
jFrame.setPreferredSize(new Dimension(1000, 1000));
jFrame.setSize(new Dimension(1000, 1000));
jFrame.pack();
//Création de l'image
BufferedImage img = new BufferedImage(dataMonitoringPanel.getSize().width , dataMonitoringPanel.getSize().height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = img.createGraphics();
dataMonitoringPanel.paint(g2);
File file = File.createTempFile("tmp_", ".png");
//File file = new File("c:/dev/temp/test.png");
try {
ImageIO.write(img, "png", file);
} catch (Exception e1) {
e1.printStackTrace();
} |
Voici l'exception :
Citation:
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:197)
at java.awt.Window.<init>(Window.java:534)
at java.awt.Frame.<init>(Frame.java:420)
at java.awt.Frame.<init>(Frame.java:385)
at javax.swing.JFrame.<init>(JFrame.java:180)
at com.dasbot.hal.client.main.DataAlerteSender.main(DataAlerteSender.java:58)
Y a t'il une solution pour ne pas avoir cette contrainte ?
Merci !
Stéphane