Afficher tableau dans une fenêtre
Résolu
Vitaldix
Messages postés
116
Date d'inscription
Statut
Membre
Dernière intervention
-
Vitaldix Messages postés 116 Date d'inscription Statut Membre Dernière intervention -
Vitaldix Messages postés 116 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je programme actuellement une bataille navale, et j'ai besoin d'afficher les deux tableaux (coordonnées de l'utilisateur et coordonnées de là où on tire) dans une fenêtre, mais cela ne fonctionne pas.
Voici le code que j'utilise :
Sauf que petit problème, seule la dernière ligne du premier tableau apparaît, ce qui ne va pas bien évidemment. Si quelqu'un sait d'où cela peut venir, j'aimerai bien savoir, s'il vous plaît !
Merci d'avance,
bonne journée
je programme actuellement une bataille navale, et j'ai besoin d'afficher les deux tableaux (coordonnées de l'utilisateur et coordonnées de là où on tire) dans une fenêtre, mais cela ne fonctionne pas.
Voici le code que j'utilise :
public static JLabel truc; public static JLabel machin; public partie(){ //initialisation des tableaux String[][] tabl = new String [11][11]; String[][] tablref = new String [11][11]; String[][] tablref2 = new String [11][11]; //appel de fonction de remplissage de tableau tableau(tablref); tableau_(tablref2); tableau_(tabl); //création de la fenetre this.setSize(600,600); this.setTitle("jeu"); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); //setResizable(false) ; //création des panels JPanel pano = new JPanel(); JPanel pano4 = new JPanel(new GridLayout (11,11)); JPanel pano5 = new JPanel(new GridLayout (11,11)); //ajout des panels dans la fenetre add(pano); pano.add(pano4); pano.add(pano5); //création du tableau for (String[] t : tablref) { for (String n : t) truc = new JLabel(n + " "); machin = new JLabel(); pano4.add(truc); pano4.add(machin); } for (String[] t : tablref) { for (String n : t) truc = new JLabel(n + " "); machin = new JLabel(); pano5.add(truc); pano5.add(machin); } } public static void tableau(String[][] tabl) { for (int x=1; x<11; x++) for (int y=1; y<11; y++) tabl[x][y] = String.format("%c%d", 'A'+x-1, y); for (int i=1; i<11;i++) tabl[i][0] = String.format("%c", 'A'+i-1); for (int i=0; i<11; i++) tabl[0][i]=i +" "; } public static void tableau_(String[][] tabl) { for (int x=1; x<11; x++) for (int y=1; y<11; y++) tabl[x][y] = "_"; for (int i=1; i<11;i++) tabl[i][0] = String.format("%c", 'A'+i-1); for (int i=0; i<11; i++) tabl[0][i]=""+i; }
Sauf que petit problème, seule la dernière ligne du premier tableau apparaît, ce qui ne va pas bien évidemment. Si quelqu'un sait d'où cela peut venir, j'aimerai bien savoir, s'il vous plaît !
Merci d'avance,
bonne journée
A voir également:
- Afficher tableau dans une fenêtre
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
- Tableau croisé dynamique - Guide
1 réponse
Déjà, le setVisible(true); doit toujours être après l'ajout des éléments, sinon rien ne garantie que ceux qui seraient ajoutés après soient effectivement affichés.
Mais sinon le vrai problème c'est ici :
Il te manque donc juste des accolades pour que tes ajouts soient bien dans la deuxième boucle :
Remarque : c'est une très mauvaise idée d'avoir déclaré "truc" et "machin" comme membre "public static", ce sont des variables locales !
D'ailleurs elles ne servent à rien... tu peux les supprimer.
Voici comment tu pourrais faire proprement l'affichage de tes deux tableaux :
Mais sinon le vrai problème c'est ici :
for (String n : t) truc = new JLabel(n + " "); machin = new JLabel(); pano4.add(truc); pano4.add(machin);Tu créés bien 11x11 JLabel "truc" mais tu ne créés que 11 JLabel "machin", et dans les deux cas tu n'ajoutes que 11 truc et 11 machin dans pano4 (idem pour pano5)
Il te manque donc juste des accolades pour que tes ajouts soient bien dans la deuxième boucle :
for (String n : t) { truc = new JLabel(n + " "); machin = new JLabel(); pano4.add(truc); pano4.add(machin); }
Remarque : c'est une très mauvaise idée d'avoir déclaré "truc" et "machin" comme membre "public static", ce sont des variables locales !
D'ailleurs elles ne servent à rien... tu peux les supprimer.
Voici comment tu pourrais faire proprement l'affichage de tes deux tableaux :
//création du tableau for (String[] t : tablref) for (String n : t) { pano4.add(new JLabel(n)); pano5.add(new JLabel(n)); }
Tes corrections marchent en effet mais seulement pour tablref ! On voudrait également le faire pour tabl et tablref2, l'un en dessous de l'autre (je précise bien évidemment qu'on a remplacé tablref par tabl et tablref2 dans tes corrections).
Je précise également que tabl et tablref2 sont par la suites remplis par des lettres au lieu de "_", je ne sais pas si ça joue mais je le dis quand même.
Merci de ton aide, bonne soirée
Merci en tous cas !