[JDesktopPane] Redimensionner d'une image
Bonjour à vous
Voici mon problème. Dans le code suivant, j'insère une image qui est censée servir de background à un JDesktopPane :
Code:
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;
} |
Voici la classe annexe qui me permet d'effectuer cette opération:
Code:
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;
}
} |
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 ?
Merci de vos infos.
@++