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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

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