Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de gestion de la fenetre principale

... au travers de plusieurs classes

Sujet résolu
    1 avril 2009 à 0:14:14

    Salut amis zeros, voila je galere pas mal, j'essaye en fait de créer un programme en java capable de créer une fenetre qui apparait le bouton lancer, quand l'utilisateur clique sur le bouton je veux que ca charge un autre JPane ... mais je n'y arrive pas , voici mon code :

    package PPC;
    
    import java.awt.FlowLayout;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    
    import PPC.moteur.MoteurFenetre;
    
    public class Fenetre extends JFrame {
    	// on crée les contenus possibles
    	private JPanel contenu = new JPanel();
    	private JPanel principal = new JPanel();
    
    	//on definit la disposition
    	FlowLayout disposition = new FlowLayout();
    	
    	
    	public Fenetre() {
    		//on definit le titre et la taille de la fenetre
    		this.setTitle("Jeu pierre papier ciseaux");
    		this.setSize(300 , 200);
    		
    		// on applique la disposition aux contenus
    		contenu.setLayout(disposition);
    		principal.setLayout(disposition);
    		
    		// on crée les elements
    			//on crée les boutons et on les ajoute au contenu
    			JButton bouttonPierre = new JButton("Pierre");
    			JButton bouttonPapier = new JButton("Papier");
    			JButton bouttonCiseau = new JButton("Ciseaux");
    		
    			//on crée tout ce qu'il faut pour la presentation d'entree
    			JLabel texte = new JLabel("Bienvenue ! \n voici le jeu Pierre Papier Ciseau !\n");
    			JButton lancer = new JButton("Lancer");
    	
    		// on ajoute le contenu	
    			// on ajoute les 3 boutons au contenu
    			contenu.add(bouttonPierre);
    			contenu.add(bouttonPapier);
    			contenu.add(bouttonCiseau);
    			
    			// on ajoute le label et le bouton
    			principal.add(texte);
    			principal.add(lancer);
    		
    		// on ajoute les ecouteurs
    		MoteurFenetre moteur = new MoteurFenetre(this);	
    		bouttonPierre.addActionListener(moteur);
    		bouttonPapier.addActionListener(moteur);
    		bouttonCiseau.addActionListener(moteur);		
    		
    		lancer.addActionListener(moteur);
    		
    		// on donne le contenu de la fenetre
    		this.setContentPane(principal);
    	
    		// on rend la fenetre visible
    		this.setVisible(true);
    	}
    
    
    	public void changePane() {
    		this.setContentPane(contenu);
    	}
    	
    	
    	
    }
    


    package PPC.moteur;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    import javax.swing.JButton;
    import javax.swing.JOptionPane;
    
    import PPC.Fenetre;
    import PPC.jeu;
    public class MoteurFenetre implements ActionListener {
    	
    	private Fenetre copieFenetre;
    	
    	public MoteurFenetre(Fenetre obj)
    	{
    		copieFenetre = obj;
    	}
    	
    	public void actionPerformed(ActionEvent evenement)
    	{	
    		//on recupere le bouton (on le force a passer de OBJECT a JButton) 
    		JButton boutonclique = (JButton) evenement.getSource();
    		
    		// on retrouve le label du bouton
    		String label = boutonclique.getText();
    		
    		
    		if (label.equals("Pierre"))
    			{
    				System.out.println("pierre");
    			}
    		if (label.equals("Papier"))
    			{
    				System.out.println("papier");
    			}
    		if (label.equals("Ciseaux"))
    			{
    				System.out.println("ciseaux");
    			}
    		if (label.equals("Lancer"))
    			{
    				copieFenetre.changePane();
    			}
    	
    	}
    	
    }
    


    package PPC;
    
    import java.awt.FlowLayout;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    
    import PPC.moteur.MoteurFenetre;
    
    public class Fenetre extends JFrame {
    	// on crée les contenus possibles
    	private JPanel contenu = new JPanel();
    	private JPanel principal = new JPanel();
    
    	//on definit la disposition
    	FlowLayout disposition = new FlowLayout();
    	
    	
    	public Fenetre() {
    		//on definit le titre et la taille de la fenetre
    		this.setTitle("Jeu pierre papier ciseaux");
    		this.setSize(300 , 200);
    		
    		// on applique la disposition aux contenus
    		contenu.setLayout(disposition);
    		principal.setLayout(disposition);
    		
    		// on crée les elements
    			//on crée les boutons et on les ajoute au contenu
    			JButton bouttonPierre = new JButton("Pierre");
    			JButton bouttonPapier = new JButton("Papier");
    			JButton bouttonCiseau = new JButton("Ciseaux");
    		
    			//on crée tout ce qu'il faut pour la presentation d'entree
    			JLabel texte = new JLabel("Bienvenue ! \n voici le jeu Pierre Papier Ciseau !\n");
    			JButton lancer = new JButton("Lancer");
    	
    		// on ajoute le contenu	
    			// on ajoute les 3 boutons au contenu
    			contenu.add(bouttonPierre);
    			contenu.add(bouttonPapier);
    			contenu.add(bouttonCiseau);
    			
    			// on ajoute le label et le bouton
    			principal.add(texte);
    			principal.add(lancer);
    		
    		// on ajoute les ecouteurs
    		MoteurFenetre moteur = new MoteurFenetre(this);	
    		bouttonPierre.addActionListener(moteur);
    		bouttonPapier.addActionListener(moteur);
    		bouttonCiseau.addActionListener(moteur);		
    		
    		lancer.addActionListener(moteur);
    		
    		// on donne le contenu de la fenetre
    		this.setContentPane(principal);
    	
    		// on rend la fenetre visible
    		this.setVisible(true);
    	}
    
    
    	public void changePane() {
    		this.setContentPane(contenu);
    	}
    	
    	
    	
    }
    



    voila .. j'espere que ca vous aidera ... a m'aider ^^

    merci a vous d'avance ;)
    • Partager sur Facebook
    • Partager sur Twitter
      1 avril 2009 à 0:24:59

      Salut :)

      On évite de toucher au contentPane des JFrame ça serait mieux ;) C'est pas interdit mais bon celui par défaut est très bien.

      Donc pas de setContentPane(monJPanel), mais plutôt this.add.(monJPanel);

      A partir de là, pour remplacer le JPanel, suffit de virer le précédent avec remove(monJPanel); et de refaire un this.add(monJPanel) derrière.

      Je suis clair ou ?

      Bon avec du code :

      public void changePane() {
      	this.remove(principal);
              this.add(contenu);
              this.validate();
      }
      

      • Partager sur Facebook
      • Partager sur Twitter
        1 avril 2009 à 0:27:49

        c'est parfait merci !!!!

        c'etait le validate qui me manquait ;)

        merci a toi ;););)
        • Partager sur Facebook
        • Partager sur Twitter

        probleme de gestion de la fenetre principale

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown