Bonjour,je redéfinis JPanel afin d'obtenir une image de fond adapté au composant, mais je n'arrive pas à récupérer l'image afficher en fond par mon JPanel dans un BufferedImage ou dans un fichier en conservant la largeur et la hauteur de l'image adaptée.
Voici la classe qui redéfinie JPanel :
Et voici comment j'ai tenté de l'adapter :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 **/ CETTE CLASS PERMET DADAPTER LA TAILLE DE LIMAGE AU COMPOSANT QUELLE * SOIT + GRANDE OU + PETITE QUE LE COMPOSANT(PANNEAU) */ class PanneauImage extends JPanel { private Image img; public String file; /** * load a image *@arg File = ????????.gif/jpg/png */ public PanneauImage() { file = "monImage.jpg"; System.out.println("file " + file); img = new ImageIcon(getClass().getResource(file)).getImage(); repaint(); } /** * Loads the specified image, which must be a JPG, a GIF, or a PNG. * @param file the file to load */ public PanneauImage(String file) { this.file = file; img = new ImageIcon(getClass().getResource(file)).getImage(); repaint(); } /** * * @return STRING IMAGE * @author kayzra */ public String getImage() { return file; } /** *@Override JPanel */ @Override public void paintComponent(Graphics g) { super.paintComponent(g); if (img == null) return; g.drawImage(img, 0, 0, getWidth(), getHeight(), this); } } }
Avec ces modifications j'obtiens un fichier BufImagCompo.jpg tout noir avec la largeur et la hauteur égale au composant affiché au lieu d'avoir une image.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /** *@Override JPanel */ @Override public void paintComponent(Graphics g) { super.paintComponent(g); if (img == null) return; g.drawImage(img, 0, 0, getWidth(), getHeight(), this);//IF + BOOLEAN A ETE SUPRIMER BufferedImage imageCompo = new BufferedImage(getWidth(),getHeight(),BufferedImage.TYPE_INT_RGB); try{ ImageIO.write(imageCompo, "jpg", new File("BufImagCompo.jpg")); }catch(Exception ex) {ex.printStackTrace();} }
En fait je ne vois pas comment récupérer l'image, pour ne pas créer un BufferedImage aux bonnes dimensions mais vide (noir)?
Mes connaissances en java n'étant pas suffisante, je vous implore de bien vouloir m'apporter votre aide.![]()
Partager