Faire un background avec une image et ajouter des images dessus

Résolu/Fermé
drakahon Messages postés 9 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 24 avril 2013 - 24 avril 2013 à 16:01
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 24 avril 2013 à 19:01
Bonjour,

J'ai cherché à voir comment faire une background avec une image dans un JPanel, en fin de compte, j'ai vu qu'il fallait faire de la même façon que lorsque j'ajoute des images dans ce JPanel, ici j'utilise g.drawImage(). Le probleme, c'est que les images que j'ajoute ensuite ne sont pas visible sur ce background. J'ai essayé d'utiliser setOpaque(false) sur le background mais rien y fait...

Au fait, je travail sous netbeans.

Voici ce que j'ai fais :


un bouton qui permet d'ajouter le background à mon JPanel que j'ai nommé : jRoomPanel

 private void jBackgroundButtonActionPerformed(java.awt.event.ActionEvent evt) {
     
     if(jRoomBackgroundComboSelect==1)//on a selectionné une image dan le ComboBox
        {
            ImagePanel3 imgBack=new ImagePanel3(pathBackground);
            imgBack.setOpaque(false);
            jRoomPanel.add(imgBack);
            jRoomPanel.repaint();
        }
        
        
        
        
    }




et voici ImagePanel3 :



public class ImagePanel3 extends JPanel {          
    private final Image imgBack;    

        public ImagePanel3(String fileName) {
            imgBack = new ImageIcon(fileName).getImage();
        setSize(imgBack.getWidth(this),imgBack.getHeight(this));
        }

    public void paintComponent(Graphics g) {

          super.paintComponent(g);
        g.drawImage(imgBack, 0, 0, getWidth(), getHeight(), null);
    }
    }




Voilà, est ce que vous avez une idée ?
Merci.
A voir également:

2 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
24 avril 2013 à 18:41
Je ne vois pas où est le problème, voici un main qui utilise trois ImagePanel3, le premier sert de background, les deux autres sont par dessus le background, c'est automatique puisque ces deux JPanels sont dans le JPanel de background...

public static void main(String[] args)
{
    JFrame frame = new JFrame();
    frame.setLayout(null);
    frame.setSize(500,500);

    ImagePanel3 back = new ImagePanel3("C:/0.png");
    back.setLayout(null);
    frame.add(back);

    ImagePanel3 img1 = new ImagePanel3("C:/1.png");
    img1.setLocation(100,100);
    back.add(img1);
    
    ImagePanel3 img2 = new ImagePanel3("C:/2.png");
    img2.setLocation(300,300);
    back.add(img2);
    
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
1
drakahon Messages postés 9 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 24 avril 2013
24 avril 2013 à 18:53
effectivement ca fonctionne, il fallait que j'utilise le setLayout(null) ! Encore une fois merci !
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
24 avril 2013 à 19:01
Le setLayout(null) n'est pas obligatoire. C'est le plus commode pour conserver les dimensions de l'image vu la manière dont est codé ImagePanel3, mais ça peut se changer pour que tu puisses utiliser n'importe quel autre Layout pour tes JPanel.
0