Afficher le contenu d'un LinkedList dans un JFrame en java

Résolu
Otobox Messages postés 14 Date d'inscription samedi 17 mars 2012 Statut Membre Dernière intervention 10 juin 2012 - 14 avril 2012 à 20:26
 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);
}
}
-------------------------------------------------------------------------------------

9 réponses

Utilisateur anonyme
15 avril 2012 à 22:00
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.)
3
Otobox Messages postés 14 Date d'inscription samedi 17 mars 2012 Statut Membre Dernière intervention 10 juin 2012
17 avril 2012 à 21:06
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
3
Otobox Messages postés 14 Date d'inscription samedi 17 mars 2012 Statut Membre Dernière intervention 10 juin 2012
15 avril 2012 à 02:11
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);}}
0
Utilisateur anonyme
15 avril 2012 à 15:01
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.)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Otobox Messages postés 14 Date d'inscription samedi 17 mars 2012 Statut Membre Dernière intervention 10 juin 2012
15 avril 2012 à 16:56
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();
}
}

}
0
Utilisateur anonyme
15 avril 2012 à 19:16
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.)
0
Otobox Messages postés 14 Date d'inscription samedi 17 mars 2012 Statut Membre Dernière intervention 10 juin 2012
15 avril 2012 à 19:58
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 ?
0
Utilisateur anonyme
19 avril 2012 à 21:21
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.)
0
Utilisateur anonyme
15 avril 2012 à 00:05
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.)
-1
Rejoignez-nous