Bonjour,

J'ai récupérer une classe étendant JPanel qui permet d'afficher le spectre d'une musique (cette classe provient du projet Jlayer). On l'appelera JPanelSpectrum. J'ai créer une JPanel avec une image en fond et à un endroit j'utilise JPanelSptectrum pour afficher le spectre. Le problème c'est que j'aimerai que ce JPanel soit transparent pour laisser apparaitre l'image du premier JPanel.
Mon problème c'est que la classe utilise une VolatileImage qui est créer une seul fois puis utilisé tout au long de l'exécution. Bref ce que j'aimerais c'est initialisé cette VolatileImage avec la partie de l'image de fond du premier JPanel que la classe JPanelSpectrum recouvre.

Voici les morceaux de code intéressant:
Code de JPanelSpectrum
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
private synchronized Image getDoubleBuffer()
    {
        if (bi == null || (bi.getWidth(null) != getSize().width || bi.getHeight(null) != getSize().height))
        {
            width = getSize().width;
            height = getSize().height;
            height_2 = height >> 1;
            computeColorScale();
            bi = getGraphicsConfiguration().createCompatibleVolatileImage(width, height);
        }
        return bi;
    }
Quand on veut afficher un spectre on appelle la méthode process. Celle récupère la VolatileImage, l'efface avec fillRect et y dessine se qui va bien puis dessine le tout sur le JPanel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Graphics wGrp = getDoubleBuffer().getGraphics();
        wGrp.setColor(getBackground());
        wGrp.fillRect(0, 0, getSize().width, getSize().height);
        ...
        if (getGraphics() != null) getGraphics().drawImage(getDoubleBuffer(), 0, 0, null);
Donc ce que j'aimerai, c'est éviter la partie wGrp.fillRect(... et la remplacer par la partie de l'image du premier JPanel.

J'ai trouvé un post sur ce forum qui parlait de comment faire une sauvegarde de l'image de fond d'un JPanel, mais c'était en dehors de ce JPanel, donc ça ne correspond pas à ce que je souhaite.

Merci !