Bonjour,
voici mon problème : je souhaiterais faire une classe AffichageImage pour avoir en sortie un Jpanel avec une image à l'intérieur.
J'ai trouvé quelque part comment chargé une image dans une fenêtre. Voici le code :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ChargerImage
{
public static void main(String[] args)
{
Fenetre fenetre = new Fenetre();
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.show();
}
}
class Fenetre extends JFrame
{
public Fenetre()
{
Container leContenant = getContentPane();
leContenant.setLayout(new FlowLayout());
AffichageImage image = new AffichageImage("image.jpg");
leContenant.add(image);
}
}
class AffichageImage extends Canvas
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int largeurEcran = screenSize.width;
int hauteurEcran = screenSize.height;
Image image;
public AffichageImage(String url)
{
image = getToolkit().getImage(url);
prepareImage(image, this);
}
public void paint(Graphics g)
{
g.drawImage(image, 0, 0, this);
}
public boolean imageUpdate(Image image, int info, int x, int y, int l, int h)
{
if ((info & (WIDTH | HEIGHT)) != 0)
{
setSize(l, h);
getParent().getParent().getParent().getParent().setBounds( (largeurEcran - l) / 2, (hauteurEcran - h) / 2, l+8, h+32 );
}
if ((info & (ALLBITS)) != 0)
{
repaint();
return false;
}
else
{
return true;
}
}
}
ça marche.
Mais le problème c'est pour l'adapter avec un JPanel Je garde seulement la classe AffichageImage.
Et quand j'utilise un code du type ci-dessous cela n'affiche pas d'image :
public static void main(String[] args) {
JFrame frame = new JFrame("essai") ;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel() ;
AffichageImage image = new AffichageImage("image.jpg") ;
panel.add(image) ;
frame.add(panel) ;
frame.pack();
frame.setVisible(true) ;
}
Est-ce que quelqu'un pourrait m'aider ? Le but étant de pouvoir charger facilement des images dans des JPanels