jar exportable avec une image
Bonjour,
Lors de la programmation d'une application java, je fais intervenir deux images en guise de fond de JFrame.
Pour cela j'ai une classe qui me construit un JPanel en chargeant une image :
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public class JPanelImage extends JComponent
{
public int mode;
public TexturePaint texture;
public BufferedImage bufferedImage;
public static final int CENTRE = 0;
public static final int TEXTURE = 1;
public JPanelImage( String fileName, int mode)
{ this.mode = mode;
this.bufferedImage = this.toBufferedImage(Toolkit.getDefaultToolkit().getImage(fileName));
this.texture = new TexturePaint(bufferedImage,new Rectangle(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight()));
}
public void paintComponent(Graphics g)
{ switch( mode )
{ case TEXTURE :
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(texture);
g2d.fillRect(0, 0, getWidth(), getHeight() );
break;
case CENTRE :
g.setColor(this.getBackground());
g.fillRect(0,0,getWidth(), getHeight() );
g.drawImage(bufferedImage,(getWidth()-bufferedImage.getWidth())/2,(getHeight()-bufferedImage.getHeight())/2,null);
break;
default :
super.paintComponents(g);
}
}
public BufferedImage toBufferedImage(Image image)
{ image = new ImageIcon(image).getImage();
BufferedImage bufferedImage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.createGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, image.getWidth(null),
image.getHeight(null));
g.drawImage(image, 0, 0, null);
g.dispose();
return bufferedImage;
} |
Cela marche très bien et il ne me reste plus qu'à faire ensuite dans mon package vue dans une classe qui extends JFrame:
(dans le constructeur)
Code:
setContentPane(new JPanelImage(String filename, 0))
sauf que, au début pleine d'innocence et de naïveté j'ai repoussé le problème sous-jacent d'exporter mon jar.
Donc à ce jour mon filename est un chemin de dossier de MON ordinateur....
Pleine de bonne volonté j'ai tenté une alternative concluante jusqu'à maintenant créer un package image et faire:
Code:
setContentPane(new JPanelImage("image/nom_image.jpg", 0))
mais toujours rien et en plus java m'engueule:
Code:
1 2 3
| Exception in thread "main" java.lang.IllegalArgumentException: Width (-1) and height (-1) cannot be <= 0
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
at java.awt.image.BufferedImage.<init>(BufferedImage.java:329) |
Un aide serait la bienvenue :ccool: