Bonjour,

Je suis actuellement sur un projet de labyrinthe en java sous Eclipse. J'ai commencé par créer un tableau de int à deux dimensions (de 10x10) auquel j'ai ajouté un tableau de boutons (donc 10x10 boutons). Tout a marché.

Quand j'ai voulu faire un labyrinthe plus grand (10 lignes et 20 colonnes), il y a eu seulement qu'une partie du labyrinthe affiché dans ma fenêtre dont la taille est de 10x10 ! (et non 10x20)

Je ne comprend pas pourquoi ça ne se redimensionne pas tout seul. Voici une image de la fenêtre que j'obtiens :

Nom : Capture d’écran 2014-09-28 à 12.14.57.png
Affichages : 239
Taille : 22,7 Ko

Ici, il y a donc que la moitié de ma matrice affiché

Je travaille avec 3 classes : la fenêtre, le labyrinthe et la barre d'action (les boutons)

Le labyrinthe est ajouté à la fenêtre par un simple BorderLayout. Je pense que le problème viens du GridLayout de la classe Labyrinthe.

Voici le code de cette classe :

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
67
 
public class LabyrintheNiv2 extends JPanel{
 
	/************************************** VARIABLES **************************************/
 
	private BarreAction barreAction;
	private int[][] grille;
	private ImageIcon caseVide = new ImageIcon(new ImageIcon(getClass().getResource("/Vide.png")).getImage().getScaledInstance(35, 35, Image.SCALE_DEFAULT));
	private ImageIcon caseMur = new ImageIcon(new ImageIcon(getClass().getResource("/Mur.png")).getImage().getScaledInstance(35, 35, Image.SCALE_DEFAULT));
	private ImageIcon caseDepArr = new ImageIcon(new ImageIcon(getClass().getResource("/DepArr.png")).getImage().getScaledInstance(35, 35, Image.SCALE_DEFAULT));
 
	/************************************** CONSTRUCTEUR **********************************/
 
	public LabyrintheNiv2(BarreAction barreAction){
		this.barreAction = barreAction;
		creerLab();
	}
 
	/************************************** FONCTIONS *************************************/
 
	public void creerLab() {
		Dimension dim = new Dimension(caseVide.getIconWidth(), caseVide.getIconHeight());
 
		grille = new int[][]{
			    { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
			    { 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1 },
			    { 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0 },
			    { 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0 },
			    { 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 },
			    { 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 },
			    { 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0 },
			    { 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0 },
			    { 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1 },
			    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2 }
		 };
 
			JButton[][] button = new JButton[10][20];
			JPanel panel = new JPanel();
			panel.setLayout(new GridLayout(10, 20));
			this.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
 
			for (int i = 0; i < grille.length; ++i)
					for (int j = 0; j < grille.length; ++j) {
 
						if(grille[i][j] == 0)  
							button[i][j] = new JButton(caseVide);
 
						else if(grille[i][j] == 1) 
							button[i][j] = new JButton(caseMur);
 
						else 
							button[i][j] = new JButton(caseDepArr);
 
						button[i][j].setPreferredSize(dim);
						panel.add(button[i][j]);
 
					}
 
			this.add(panel);
 
 
 
 
	}
 
 
}
J'ai importé bien entendu toutes les classes qui fallait. Si quelqu'un peut m'aider ça serait super, merci d'avance !