Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création de pseudos pages

    18 juillet 2011 à 14:38:07

    Bonjour à tous !


    Depuis quelques jours je cherche à développer un petit programme en java. Seulement je me pose quelques question pour l'organisation de ce programme.

    Je souhaiterais créer en gros une petite interface simple, bouttons menu à gauche qui changent le contenu de droite. On clique sur le boutton accueil et c'est... la page accueil qui s'affiche.

    Toutes ses pages on la même structure (Images de fond par exemple) mais le menu de gauche peux varier en fonction de la page ou l'on se trouve.

    J'ai réussi à créer une première "page", seulement je comprend pas vraiment comment faire pour créer d'autre pages en utilisant la même base mais en différenciant le contenu.

    J'ai suivit le tutoriel Java, j'ai donc utilisé JFrame, JBouton et cie.

    Je vous donne quelques exemples de codes :

    Main
    public class Main {
    
    	public static void main(String[] args)
    	{
    		Fenetre fenetre = new Fenetre();
    	}
    }
    


    Fenetre
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    
    public class Fenetre extends JFrame {
    
    	public String pageActuelle = "connexion";
    	private Panneau pan = new Panneau();
    	private JPanel container = new JPanel();
    
    	// Button
    	private boutonMenu boutonConnexion = new boutonMenu(this, "Connexion", 10, 140);
    	private boutonMenu boutonContact = new boutonMenu(this, "Contact", 10, 170);
    
    	public Fenetre()
    	{
    		this.setTitle("Connexion");
            this.setSize(500, 540);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLocationRelativeTo(null);
            this.setResizable(false);
    
            container.setLayout(new BorderLayout());
            this.setMenu();
    
            this.setContentPane(container);
            this.setVisible(true);
    	}
    
    	public void setMenu()
    	{
    		if(pageActuelle.equals("connexion") || pageActuelle.equals("contact"))
    		{
    			pan.add(this.boutonConnexion);
    			pan.add(this.boutonContact);
    		}
    		else if(this.pageActuelle == "contact")
    		{
    			
    		}
    
            this.setContent();
    	}
    	public void setContent()
    	{
    		this.pan.setPage(this.pageActuelle);
            container.add(this.pan, BorderLayout.CENTER);
    	}
    }
    


    Panneau
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    
    
    public class Panneau extends JPanel {
    	private String pageActuelle;
    
    	public void setPage(String page) {
    		this.pageActuelle = page;
    	}
    	public void paintComponent(Graphics g)
        {
    		try {
                		Color backgroundColor = new Color(0xe9e1d8);
    
                		// Background
                		g.setColor(backgroundColor); 
                		g.fillRect(0, 0, 500, 540);
    
                		// Header
                       	Image imgHeader = ImageIO.read(new File("header.jpg"));
                       	g.drawImage(imgHeader, 0, 0, this);
    
                       	// Content
                       	Image imgContenu = ImageIO.read(new File("background.gif"));
                       	g.drawImage(imgContenu, 140, 111, this);
    
                       	g.setColor(Color.black);
                       	if(this.pageActuelle.equals("connexion"))
                       	{
                           	g.drawString("Remplissez le formulaire suivant afin de vous identifier.", 170, 155);
                       	}
                       	else if(this.pageActuelle.equals("contact"))
                       	{
                           	g.drawString("Remplissez le formulaire suivant pour nous contacter.", 170, 155);
                       	}
    		}
    		catch (Exception any) {
    			any.printStackTrace();
    			
    		}
    
                
        }
    }
    


    Bouttons menu
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    import javax.swing.JButton;
    
    
    public class boutonMenu extends JButton implements MouseListener
    {
    	private String name;
        private Image img;
        private int top;
        private int left;
        private Font font = new Font("Arial", Font.BOLD, 12);
        private Fenetre fen;
    
        public boutonMenu(Fenetre fenetre, String str, int left, int top)
        {
            this.name = str;
            this.top = top;
            this.left = left;
    		this.setBorderPainted(false);
    		this.fen = fenetre;
    
    		try {
    			this.img = ImageIO.read(new File("menu-fond.gif"));
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    	//	fen.pageActuelle = "contact";
    	//	fen.setMenu();
    		this.addMouseListener(this);
        }
        
        public void paintComponent(Graphics g) {
            g.drawImage(this.img, 0, 0, this);
             
             g.setColor(Color.white);
             g.setFont(this.font);
             g.drawString(this.name, 14, (this.getHeight() / 2) + 4);
    
             this.setBounds(this.left, this.top, this.img.getWidth(this), this.img.getHeight(this));
          //   System.out.println("1");
        }
    
        /**
         * Méthode appelée lors du clic de souris
         */
        public void mouseClicked(MouseEvent event) {
        	this.fen.pageActuelle = this.name.toLowerCase();
        	// System.out.println(this.fen.pageActuelle);
        	this.fen.setMenu();
        }
    
        /**
         * Méthode appelée lors du survol de la souris
         */
        public void mouseEntered(MouseEvent event) {
                
        }
    
        /**
         * Méthode appelée lorsque la souris sort de la zone du bouton
         */
        public void mouseExited(MouseEvent event) {
                
        }
    
        /**
         * Méthode appelée lorsque l'on presse le clic gauche de la souris
         */
        public void mousePressed(MouseEvent event) {
                
        }
    
        /**
         * Méthode appelée lorsque l'on relâche le clic de souris
         */
        public void mouseReleased(MouseEvent event) {
                        
        }
    }
    


    Toutes mes variables passent bien mais impossible de modifier le contenu de ma fenêtre...

    Merci de votre aide !

    Maxime !
    • Partager sur Facebook
    • Partager sur Twitter
    Recherche des annonceurs incentive pour diffuser sur http://www.envoyer-sms-gratuit.net - Contactez-moi !
      18 juillet 2011 à 15:09:42

      Ajoute fen.revalidate(); après fen.setMenu(); ?

      A titre de conseil, jete un coup d'oeil au pattern MVC, parce que là ton code va très très vite devenir ingérable ^^
      • Partager sur Facebook
      • Partager sur Twitter
        18 juillet 2011 à 18:15:37

        Merci pour ta réponse. C'est bien fen.validate() (Pas de "re" au passage ;) ) mais ça me cause quelques décallages / soucis.

        Je vais voir pour me plonger dans le "pattern MVC" mais j'ai quelques relectures à faire. (J'ai lu le cours officiel sur ce point)

        Merci encore
        • Partager sur Facebook
        • Partager sur Twitter
        Recherche des annonceurs incentive pour diffuser sur http://www.envoyer-sms-gratuit.net - Contactez-moi !
          19 juillet 2011 à 11:13:50

          Pour un système de page, ne vaut-il pas mieux d'utiliser un CardLayout ?
          • Partager sur Facebook
          • Partager sur Twitter

          Création de pseudos pages

          × 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