IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Jeu de carte : Jpane ou JInternalFrame?


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Points : 106
    Points
    106
    Par défaut Jeu de carte : Jpane ou JInternalFrame?
    Bonjour,

    Je développe un petit jeu en java et je me demande qu'elle est la bonne pratique.

    Ce jeu va se présenter un peu comme la fenetre du solitaire de windows.

    Sauf qu'il y a plusieurs mode de jeu (seul ou contre l'ordi).

    Donc quand on fait fichier=> nouveau jeu seul, le plateau de jeu doit apparaitre.
    Si on on fait fichier=> nouveau jeu contre l'ordi, le plateau contre l'ordi doit apparaitre.
    Comment mettre en pratique cela?
    Est ce que le mieux c'est de créer un JInternalFrame quand on fait un nouveau jeu?
    Ou est ce qu'en créant un Jpane pour le jeu, cela peut etre valable?

    J'essaye la méthode du Jpane mais même en utilisant la méthode repaint, ma fenetre n'est actualisé qu'après redimensionnement...

    Merci par avance pour votre aide!

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Utilises la méthode revalidate de ton JPanel.
    (Et si ce problème apparait à la création de ta JFrame, c'est que tu appelles la méthode setVisble de ta JFrame trop tôt).
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Points : 106
    Points
    106
    Par défaut
    Salut et merci pour ton aide.

    J'ai essayé le revalidate mais ça n'a pas marché.

    Pour t'expliquer plus en détail, je construit une Jframe qui appel cette méthode :
    setContentPane(buildContentPane());

    Celle-ci construit mon premier Jpane et ça fonctionne.

    J'ai un menu et dans fichier=> nouveau j'ai associé une action.
    Cette action appelle la classe NouvellePartieSeulAction.

    C'est dans cette classe que je crée mon deuxième Jpane avec également la méthode : buildContentPane.

    Et donc, mon deuxième Jpane n'est visible que si je redimensionne la fenetre...
    J'ai essayé donc revalidate et repaint mais ça ne marche pas...

    Est-ce une bonne pratique de construire un autre Jpane pour chaque mode de jeu?

    Voici le code pour que ça soit plus clair :
    Ma classe : FenetrePrincipale
    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
     
    public class FenetrePrincipale extends JFrame{
    	private JLabel label;
    	public FenetrePrincipale(){
    		super();
    		build();//On initialise notre fenêtre
    	}
    	private void build(){
    		// Construction du menu
    		JMenuBar menuBar = new JMenuBar();
    		JMenu menu1 = new JMenu("Fichier");
    		JMenuItem pariteSeul = new JMenuItem(new NouvellePartieSeulAction(this, "Nouvelle partie seul"));
    		menu1.add(pariteSeul);
    		setJMenuBar(menuBar);
     
    		setTitle("Memory Smiley"); //On donne un titre à l'application
    		setSize(800,600); //On donne une taille à notre fenêtre
     
    	}
    	private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout());
    		panel.setBackground(Color.white);
     
    		label = new JLabel("TESTING");
    		panel.add(label);
    		return panel;
    	}
     
    }
    La classe d'action : NouvellePartieSeulAction
    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
     
    public class NouvellePartieSeulAction extends AbstractAction {
    	private FenetrePrincipale fenetre;
    	private JLabel label;
    	public NouvellePartieSeulAction(FenetrePrincipale fenetre, String texte){
    		super(texte);
     
    		this.fenetre = fenetre;
    	}
    	public void actionPerformed(ActionEvent e) {
    		fenetre.getContentPane().removeAll();
    		fenetre.getContentPane().add(buildContentPane());
    		fenetre.repaint();
     
     
    	}
    	private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout());
    		panel.setBackground(Color.white);
     
    		label = new JLabel("Résultat!");
    		panel.add(label);
     
    		panel.setBounds(0, 0, 320, 100);
    		panel.revalidate();
     
    		return panel;
    	}
    }
    Merci par avance

  4. #4
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Points : 106
    Points
    106
    Par défaut
    C'est bon ça marche mais avec validate aprés avoir appelé la méthode buildContentPane :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fenetre.getContentPane().add(buildContentPane());
    fenetre.getContentPane().validate();
    Par contre, est-ce une bonne méthode de détuire et recréer des Jpane pour mon jeu? Ce n'est pas déprécié?

    Merci par avance!

Discussions similaires

  1. [choix de techno]comment programmer un jeu de carte
    Par roilion dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 16/08/2010, 16h43
  2. [C++] Urgent Développeur pour Jeu de cartes simple
    Par koros21 dans le forum Projets
    Réponses: 6
    Dernier message: 10/09/2006, 13h19
  3. [structure de donnée] jeu de carte
    Par .:dev:. dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 20/05/2006, 15h44
  4. [VB] Recrutement pour un Jeu de cartes WHIST
    Par Vesta dans le forum Projets
    Réponses: 5
    Dernier message: 13/09/2005, 19h43
  5. IA avec un jeu de cartes
    Par Captain_JS dans le forum Intelligence artificielle
    Réponses: 3
    Dernier message: 07/02/2005, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo