Bonjour à tous,
Je souhaite afficher dans une fenêtre graphique un tableau de case qui dispose de bordures "variables" (parfois à gauche, parfois tout autour, parfois seulement en bas...).

J'ai donc une JFrame dont le constructeur ressemble à ça:
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
 
        this.lesCasesGraphics = new ArrayList();
        LayoutManager layout2 = new BorderLayout();
        JPanel mainPanel = new JPanel();
        LayoutManager layout = new GridLayout(longueur,hauteur);
        this.getContentPane().setLayout(layout2);
        mainPanel.setLayout(layout);
        this.getContentPane().add(mainPanel, BorderLayout.CENTER);
        this.getContentPane().add(new JPanel(), BorderLayout.NORTH);
        this.getContentPane().add(new JPanel(), BorderLayout.SOUTH);
        this.getContentPane().add(new JPanel(), BorderLayout.EAST);
        this.getContentPane().add(new JPanel(), BorderLayout.WEST);
        for (int i = 0;i<this.longueur*this.hauteur;i++){
            CaseGraphic cg = new CaseGraphic();
            this.lesCasesGraphics.add(cg);
            mainPanel.add(cg);
        }
        this.setSize(400,400);
La méthode permettant de réactualiser le tableau est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
     public void affiche() {
         Iterator it = this.lesCasesGraphics.iterator();
         for (int i = 0;i<this.hauteur;i++){
             for (int j = 0; j<this.longueur;j++){
                 CaseGraphic casegraph = (CaseGraphic) it.next();
                 casegraph.update();
             }
         }
Je me suis servi d'un tuto pour dessiner à l'intérieur d'une JPanel, en redéfinnissant notamment la méthode paint(Graphics g).
Mon objet CaseGraphic se présente donc comme ça:
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
 
    private class CaseGraphic extends JPanel {
 
        private List drawables = new ArrayList();
 
 
        public void update(){
            this.clear();
//ici chaque JPanel aura une bordure sur chaque coté
                this.addDrawable(new Line(0,0,this.getHeight(),0));
                this.addDrawable(new
                       Line(0,this.getWidth(),this.getHeight(),this.getWidth()));
                this.addDrawable(new Line(this.getHeight(),0,this.getHeight(),this.getWidth()));
                this.addDrawable(new Line(0,0,0,this.getWidth()));
            this.repaint();
        }
 
        public void paint(Graphics g) {
            for (Iterator iter = drawables.iterator(); iter.hasNext();) {
                IDrawable d = (IDrawable) iter.next();
                d.draw(g);    
            }
        }
 
        public void addDrawable(IDrawable d) {
            drawables.add(d);
            repaint();
        }
 
        public void removeDrawable(IDrawable d) {
            drawables.remove(d);
            repaint();
        }
 
        public void clear() {
            drawables.clear();
            repaint();
        }
 
    }
Il y a quelques problème dans l'affichage:
1) il ya un espace entre les éléments d'une même ligne
2) la ligne en bas de chaque case n'est pas visible

Voici le résultat que j'obtiens:



En redimensionnant manuellement la fenêtre, j'arrive à obtenir le résultat voulu. Cela témoigne également d'un soucis, car lorsque ma fenêtre est redimensionnée, mes Jpanel ne sont pas redimensionnées en conséquence.

voila le résultat attendu:



Merci d'avance pour votre aide.