est-t' il possible de sauvegarder(en GIF par exemple) un JPanel sans l'afficher?
Merci d'avance
est-t' il possible de sauvegarder(en GIF par exemple) un JPanel sans l'afficher?
Merci d'avance
À ma connaissance, non : un JPanel est un Component, qui est censé être connecté à un terminal, via la méthode addNotify.
Maintenant, il n'y a pas de terminal que l'écran. Et on peut quasiment en inventer un, mais c'est un domaine assez pointu, très dépendant du système local, et comme tu es débutant... il vaut mieux que tu trouves autre chose.
salut,
pour sauvegarder un JPanel dans une image, tu fais appel à la méthode paint de ton JPanel, et tu lui passes comme paramètre l'objet Graphics d'une BufferedImage, et ensuite tu sauvegardes la BufferedImage avec ImageIO.write
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
24
25
26
27
28
29
30
31
32
33
34
35
36 import javax.swing.*; import java.awt.event.*; import java.awt.image.BufferedImage; import java.awt.*; import java.io.File; import javax.imageio.ImageIO; public class Test { public static void main(String[] args) { JFrame frm = new JFrame(); JLabel lbl = new JLabel("Image cible: image.gif"); final JPanel pn = new JPanel(); JButton btn = new JButton("Sauvegarder"); pn.setBackground(Color.RED); pn.add(lbl); pn.add(btn); btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae) { BufferedImage img = new BufferedImage(pn.getWidth(), pn.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2 = img.createGraphics(); pn.paint(g2); try{ ImageIO.write(img, "gif", new File("image.gif")); } catch (Exception e) { e.printStackTrace(); } } }); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frm.add(pn); frm.setSize(200, 200); frm.setVisible(true); } }
Bonjour Merci pour vos repense mais j'ai quelque question:
pour gifffftane:
est-ce que il ya une autre solution.il vaut mieux que tu trouves autre chose.
pour herch:
la méthode paint(g2) travaille avec les composants affiché sur l'écran .et mois je veut le
contraire
Merci
Partager