Bonjour à vous
Voici mon problème. Dans le code suivant, j'insère une image qui est censée servir de background à un JDesktopPane :
Voici la classe annexe qui me permet d'effectuer cette opération:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private JDesktopPane getJDesktopPane() { if (jDesktopPane == null) { jDesktopPane = new JDesktopPane(); try{ java.net.URL url = getClass().getResource("toto.png"); java.awt.image.BufferedImage image = javax.imageio.ImageIO.read(url); jDesktopPane.setBorder(new CentredBackgroundBorder(image)); } catch(java.net.MalformedURLException murle){ murle.printStackTrace(); } catch(java.io.IOException ioe){ ioe.printStackTrace(); } } return jDesktopPane; }
Un petit détail que je n'arrive pas à résoudre est que je voudrais que l'image remplisse l'ensemble du JDesktopPane malgré sa taille (800*600) et, si possible, qu'elle se redimensionne en même temps que le JDesktopPane. Est-ce possible ?
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 package com.bioxpr.gui; import javax.swing.border.Border; import java.awt.*; import java.awt.image.BufferedImage; public class CentredBackgroundBorder implements Border { private final BufferedImage image; public CentredBackgroundBorder(BufferedImage image) { this.image = image; } public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { /*int x0 = x + (width-image.getWidth())/2; int y0 = y + (height-image.getHeight())/2;*/ int x0 = 0; int y0 = 0; g.drawImage(image, x0, y0, null); } public Insets getBorderInsets(Component c) { return new Insets(0,0,0,0); } public boolean isBorderOpaque() { return true; } }
Merci de vos infos.
@++
Partager