Afficher le contenu d'un LinkedList dans un JFrame en java [Résolu]

Messages postés
14
Date d'inscription
samedi 17 mars 2012
Dernière intervention
10 juin 2012
- - Dernière réponse :  Utilisateur anonyme - 19 avril 2012 à 21:21
Bonsoir , voila je suis un débutant en java et j'essaye de faire un petit jeu . Quand je clique sur ok la fenêtre JBienvenu devient invisible et sa m'ouvre une autre fenêtre de la classe Jeu mon problème et le suivant j'essaye d'afficher le nom du premier joueur et du deuxième joueur mais je sais pas comment utiliser un linkedlist dans un JFrame .Merci d'avance pour votre aide

--------------------------------------------------------------------------------------
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class JBienvenu extends JFrame implements ActionListener{

BorderBienvenu hautpage =new BorderBienvenu();
Joueur1 j1= new Joueur1();
Joueur2 j2= new Joueur2();
Boutton ok =new Boutton();

JPanel p=new JPanel();

public JBienvenu(){
super();
ok.ok.addActionListener(this);
p.add(hautpage);
p.add(j1);
p.add(j2);
p.add(ok);
this.setSize(200,300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setContentPane(p);
this.setResizable(false);
this.setVisible(true);
}


public void actionPerformed(ActionEvent e) {
Object Source=e.getSource();
if(Source.equals(ok.ok)){

j1.nom1=j1.joueur11.getText();
j1.listjoueur1.add(j1.nom1);
j2.nom2=j2.joueur22.getText();
j2.listjoueur2.add(j2.nom2);
this.setVisible(false);
Jeu jeud=new Jeu();


}

}
}
-------------------------------------Joueur1------------------------------------------------
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.LinkedList;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Joueur1 extends JPanel {

JLabel joueur1 = new JLabel("Nom du Joueur 1 :");
JTextField joueur11= new JTextField();
public LinkedList listjoueur1=new LinkedList();

GridLayout grid=new GridLayout(2,1);
String nom1;

public Joueur1(){
this.setLayout(grid);
this.add(joueur1);
this.add(joueur11);
joueur11.setColumns(13);


}}
----------------------------------------Joueur2---------------------------------------
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.LinkedList;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Joueur2 extends JPanel {

JLabel joueur2 = new JLabel("Nom du Joueur 2 :");
JTextField joueur22= new JTextField();
public LinkedList listjoueur2=new LinkedList();
GridLayout grid=new GridLayout(2,1);
String nom2;
public Joueur2(){
this.setLayout(grid);
this.add(joueur2);
this.add(joueur22);
joueur22.setColumns(13);
}
}
-------------------------------------------------------------------------------------
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
3
Merci
J'ai apparement compris de travers certaines choses de ton code. Je la refais :

Ton problème est que j1.listjoueur1 est vide. Dans ton actionPerformed, tu fais :
j1.nom1=j1.joueur11.getText(); 
j1.listjoueur1.add(j1.nom1); 


Donc du coup le problème vient du fait que c'est j1.nom1 qui est vide. C'est valeur est normalement affectée par j1.joueur11.getText().

Le problème vient de tes constructeurs Joueur1 et Joueur2.


Tu ne définis aucun texte dans ton JTextField joueur11, même pas dans le constructeur. C'est ça ce que je voulais te dire. Tu ne récupères jamais ta valeur de ton JTextField. Donc le nom du joueur est vide. Donc il n'y a rien dans ta liste.




--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)

Merci Utilisateur anonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
14
Date d'inscription
samedi 17 mars 2012
Dernière intervention
10 juin 2012
3
Merci
Bonsoir voila j'ai compris le truc :D!
quand je ferme la JFrame je récupéré rien donc il fallait juste ajouter 2 ligne de code
jeud.jborder1.question.setText("Questions du joueur1:"+j1.nom1);
jeud.jborder2.question.setText("Question du joueur 2:"+j2.nom2);


if(Source.equals(ok.ok)){

j1.nom1=j1.joueur11.getText();
j1.listjoueur1.add(j1.nom1);
j2.nom2=j2.joueur22.getText();
j2.listjoueur2.add(j2.nom2);
this.setVisible(false);
Jeu jeud=new Jeu();
jeud.jborder1.question.setText("Questions du joueur1:"+j1.nom1);
jeud.jborder2.question.setText("Question du joueur 2:"+j2.nom2);
}


Merci Pylouq pour ton aide

Merci Otobox 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Otobox
Messages postés
14
Date d'inscription
samedi 17 mars 2012
Dernière intervention
10 juin 2012
0
Merci
Bonsoir
Désolé pour les problèmes que j'ai causé, j'avais oublier d'utiliser les balises. Sinnon je suis un débutant en Java j'aurais bien aimé connaitre la règle du "camel case" merci Pylouq

import java.awt.GridLayout; 
import java.util.ArrayList; 
import java.util.Hashtable; 
import java.util.LinkedList; 

import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 


public class Joueur2 extends JPanel { 

JLabel joueur2 = new JLabel("Nom du Joueur 2 :"); 
JTextField joueur22= new JTextField(); 
public LinkedList listjoueur2=new LinkedList(); 
GridLayout grid=new GridLayout(2,1); 
String nom2; 
public Joueur2(){ 
this.setLayout(grid); 
this.add(joueur2); 
this.add(joueur22); 
joueur22.setColumns(13); 
} 
} 

import java.awt.GridLayout; 
import java.util.ArrayList; 
import java.util.Hashtable; 
import java.util.LinkedList; 

import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 


public class Joueur1 extends JPanel { 

JLabel joueur1 = new JLabel("Nom du Joueur 1 :"); 
JTextField joueur11= new JTextField(); 
public LinkedList listjoueur1=new LinkedList(); 

GridLayout grid=new GridLayout(2,1); 
String nom1; 

public Joueur1(){ 
this.setLayout(grid); 
this.add(joueur1); 
this.add(joueur11); 
joueur11.setColumns(13); 


}} 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 


public class JBienvenu extends JFrame implements ActionListener{ 

BorderBienvenu hautpage =new BorderBienvenu(); 
Joueur1 j1= new Joueur1(); 
Joueur2 j2= new Joueur2(); 
Boutton ok =new Boutton(); 

JPanel p=new JPanel(); 

public JBienvenu(){ 
super(); 
ok.ok.addActionListener(this); 
p.add(hautpage); 
p.add(j1); 
p.add(j2); 
p.add(ok); 
this.setSize(200,300); 
this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
this.setContentPane(p); 
this.setResizable(false); 
this.setVisible(true); 
} 


public void actionPerformed(ActionEvent e) { 
Object Source=e.getSource(); 
if(Source.equals(ok.ok)){ 

j1.nom1=j1.joueur11.getText(); 
j1.listjoueur1.add(j1.nom1); 
j2.nom2=j2.joueur22.getText(); 
j2.listjoueur2.add(j2.nom2); 
this.setVisible(false); 
Jeu jeud=new Jeu(); 


} 

} 
} 

import java.awt.BorderLayout;
import java.util.List;

import javax.swing.JLabel;
import javax.swing.JPanel;

public class Jeuborder1 extends JPanel {
Joueur1 j1=new Joueur1();	
BorderLayout border=new BorderLayout();

  JLabel question =new JLabel("Questions du joueur 1:"+j1.listjoueur1.toString());

// c'est la ou j'ai un petit problème au lieu de m'afficher le nom sa m'affiche []

public Jeuborder1(){
this.setLayout(border);
this.add("North",question);}}

import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Jeuborder2 extends JPanel {
Joueur2 j2=new Joueur2();
BorderLayout border=new BorderLayout();


JLabel question =new JLabel("Les Questions du joueur 2"+j2.listjoueur2.toString());

// c'est la ou j'ai un petit problème au lieu de m'afficher le nom sa m'affiche []

public Jeuborder2(){
this.setLayout(border);
this.add("North",question);}}
Commenter la réponse de Otobox
0
Merci
Alors tu as d'affiché [] car tu fais appel à la méthode toStringe() d'un objet List. Du coup tu as des crochets et l'affichage sera un peu brut. A la rigueur, soit tu fais une fonction qui te fais un bel affichage des éléments de ta liste, ou alors tu fais ta classe qui hérite de Linkedist et tu redéfinis toString().


Bon, sinon ta liste est visiblement vide. En regardant vite fait ton code, je m'aperçois que c'est ta méthode actionPerformed qui s'occupe de la remplir). Apparement, tu ne rentres jamais dans ta condition if(Source.equals(ok.ok)){ . Donc du coup tu ne remplies pas ta liste. Qu'as-tu cherché à faire dans cette condition ? Car tu fais appel à equals sur des objets différents, donc de références différentes ce qui ne vérifie pas ta condition.

--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
Commenter la réponse de Utilisateur anonyme
Messages postés
14
Date d'inscription
samedi 17 mars 2012
Dernière intervention
10 juin 2012
0
Merci
Bonjour.
si je rentre dans la condition "if(Source.equals(ok.ok)){" parce que sa m'ouvre la JFrame "Jeu jeud=new Jeu();"

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class Jeu extends JFrame implements ActionListener{
Jeuborder2 jborder1= new Jeuborder2();
Jeuborder1 jborder2=new Jeuborder1();
JPanel panel=new JPanel();
QuestionJ1 j1=new QuestionJ1();
QuestionJ2 j2=new QuestionJ2();


public Jeu(){
j1.Suivant.addActionListener(this);
j2.Suivant2.addActionListener(this);
j2.Jouer.addActionListener(this);
panel.add(jborder1);
panel.add(jborder2);
jborder2.setVisible(false);
panel.add(j1);
panel.add(j2);
j2.setVisible(false);
this.setSize(400,300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setContentPane(panel);
this.setResizable(false);
this.setVisible(true);
}


public void actionPerformed(ActionEvent e) {
Object Source =e.getSource();
String t="  ";
if(Source.equals(j1.Suivant)){

j1.cmp++;	
j1.list.add(j1.question1.getText());
j1.list.add(j1.repcorrect1.getText());
j1.list.add(j1.repincorrect11.getText());
j1.list.add(j1.repincorrect22.getText());
j1.question1.setText(t);
j1.repcorrect1.setText(t);
j1.repincorrect11.setText(t);
j1.repincorrect22.setText(t);

if(j1.cmp==5){
jborder1.setVisible(false);
jborder2.setVisible(true);
j1.setVisible(false);
j2.setVisible(true);
}
}
if(Source.equals(j2.Suivant2)){

j2.cmp++;
j2.list1.add(j1.question1.getText());
j2.list1.add(j1.repcorrect1.getText());
j2.list1.add(j1.repincorrect11.getText());
j2.list1.add(j1.repincorrect22.getText());
j2.question1.setText(t);
j2.repcorrect1.setText(t);
j2.repincorrect11.setText(t);
j2.repincorrect22.setText(t);
if(j2.cmp==5){
j2.Suivant2.setEnabled(false);
j2.Jouer.setEnabled(true);


}	
}
if(Source.equals(j2.Jouer)){
this.setVisible(false);
Jeu2 jeu2=new Jeu2();
}
}

}
Commenter la réponse de Otobox
0
Merci
Le problème vient de tes constructeurs Joueur1 et Joueur2. Tu changes juste les colonnes de tes JTextFields joueur11 et joueur22 sans jamais leur affecter de valeur. Donc du coup tu ne récupères rien. Es-tu sûr d'avoir changer la valeur des tes JTextField ? Visiblement ils sont vides.


--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
Commenter la réponse de Utilisateur anonyme
Messages postés
14
Date d'inscription
samedi 17 mars 2012
Dernière intervention
10 juin 2012
0
Merci
Salut,
bah je prend le contenu
j1.nom1=j1.joueur11.getText(); 
j1.listjoueur1.add(j1.nom1); 
j2.nom2=j2.joueur22.getText(); 
j2.listjoueur2.add(j2.nom2); 
et je le stock dans un LinkedList non ?
Commenter la réponse de Otobox
0
Merci
Pas de quoi, à la prochaine sur le forum !


--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
Commenter la réponse de Utilisateur anonyme
-1
Merci
Salut,

Je vais faire le rabats-joie service (ça faisait longtemps) :
1/ Utilise les balises pour afficher proprement ton code
2/ Respecte les principes de bases de la POO et de Java dont la règle du camel case par exemple

Ensuite, que veux-tu faire de tes LinkedList ? Sans me mettre à revoir ton code, il te suffit dans ta JFrame d'accéder à l'attribut représentant ta liste via ton instance de joueur.

Bref un truc du genre : j1.listjoueur1...


--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.