Bonjour tout le monde,

Je suis en train de réaliser un petit jeu de carte du style FreeCell (pour ceux qui ne connaissent pas : http://fr.wikipedia.org/wiki/FreeCell).

J'ai donc un premier projet qui gère mon jeu de cartes (nombre de cartes dans le jeu, classement des cartes par valeur, image de la carte, ...), histoire que ce projet soit le plus générique possible afin de pouvoir l'utiliser plus tard pour d'autres jeux.

J'ai donc maintenant mon projet FreeCell qui utilise mon projet Jeu de Carte.
J'ai une classe JCarte qui hérite de JLabel et qui me sert à utiliser mes cartes de manières graphiques.
J'ai une classe Plateau, qui me sert à contenir mon jeu de cartes (transformées pour l'occasion en JCarte) et les différentes piles de cartes (les huit piles contenues dans la partie basse de l'écran ici : http://upload.wikimedia.org/wikipedi...ence_Konqi.png)

Et j'ai donc ma fenêtre qui gère l'initialisation des composants graphiques, dont voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
package com.freecell.jeu;
 
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class Fenetre2 extends JFrame
{
 
    private static final long serialVersionUID = 1L;
    private JPanel panelCartesContainer;
    //    private List<JLayeredPane> layeredPanes;
    private Plateau jeu;
 
    public Fenetre2()
    {
        setSize(new Dimension(1500, 1000));
        setTitle("Test du FreeCell");
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //        layeredPanes = new ArrayList<JLayeredPane>();
        jeu = new Plateau();
        panelCartesContainer = new JPanel(new GridLayout(1, 8));
        panelCartesContainer.setBackground(new Color(0, 120, 0));
        add(panelCartesContainer);
        //        initialiserLayeredPane();
        afficherLesCartes();
        validate();
    }
 
    //    private void initialiserLayeredPane()
    //    {
    //        for (int i = 0; i < 8; i++)
    //        {
    //            JLayeredPane vLayeredPane = new JLayeredPane();
    //            vLayeredPane.setVisible(true);
    //            vLayeredPane.setBackground(new Color(0, 120, 0));
    //            vLayeredPane.setBounds(0, 0, 1400, 1400);
    //            layeredPanes.add(vLayeredPane);
    //            panelCartesContainer.add(vLayeredPane);
    //        }
    //    }
 
    private void afficherLesCartes()
    {
        int vIndicePosition = 0;
        for (int vColonne = 0; vColonne < jeu.getPiles().length; vColonne++)
        {
            JPanel vPanelVertical = new JPanel(new GridLayout(8, 1));
            vPanelVertical.setBackground(new Color(0, 120, 0));
            for (int i = jeu.getPiles()[vColonne].size() - 1; i >= 0; i--)
            {
                JCarte vJCarte = jeu.getPiles()[vColonne].get(i);
                vJCarte.setIndicePile(vColonne);
                vPanelVertical.add(vJCarte);
                //                layeredPanes.get(vColonne).add(vJCarte, vIndicePosition++);
                //                layeredPanes.get(vColonne).setLayer(vJCarte, JLayeredPane.DRAG_LAYER, vIndicePosition++);
            }
            panelCartesContainer.add(vPanelVertical);
        }
    }
}
Lorsque j'ouvre ma fenêtre donc, j'ai bien mes huit piles de cartes qui sont affichées. Par contre, lorsque je déplace une carte, vers la droite ou vers la gauche (elle sort donc de son vPanelVertical), elle passe sous le panel d'à côté. Je cherche donc un moyen de faire en sorte que tous mes JPanels aient la même profondeur.
Comme vous pouvez le remarquer, j'ai essayé l'utilisation des JLayeredPane, mais avec plus de défauts que de qualités...