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

avec Java Discussion :

architecture MVC en java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Par défaut architecture MVC en java
    bonjour, je voudrais utiliser la norme MVC, pour une application graphique, je voulais savoir si tu point de vue architecturale de mon application , elle respectera cette norme.
    Mon application utilisera la souris pour dessiner sur le panel, l'utilisateur aura le choix de la couleur.

    je voulais faire plusieurs MVC :
    - pour une barre de menu,
    - pour une fenêtre
    - pour un panel

    est ce possible?

    Merci de votre compréhension.

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    Oui bien sûre que tu peux utiliser un modèle MVC pour tous type d'application.

    Le principe du MVC est simple, c'est pour séparer la partie affichage de la partie traitement.

    En gros, tu as une classe qui va se charger de dessiner tous tes composants etc... et le code du traitement sera dans une autre classe. C'est plus une convention qu'une norme, donc toute application peut respecter ce modèle ou non, après c'est au bon vouloir de celui qui la code.

    Et pour une application qui m'a l'air si simple niveau graphique, je ne vois pas l'intérêt d'avoir plusieurs classes d'affichage... Une bonne classe héritant de JFrame, et hop tu peux placer tous tes composants dedans

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Par défaut
    Mon application de base est constituée de 3 classes:
    Pour la transformer en MVC, il faudrait que je fasse plusieurs classes?:
    - une classe ViewFenetre -> qui représente la Vue
    - une classe ControlMenu -> qui représente le contrôle du menu
    - une classe Model-> qui représente PanelGauche
    - une classe ControlSouris-> qui représente les traitements de la souris

    dites moi ce que vous en pensez, et faites moi part de vos idées.

    Voici les différentes classes qui compose l'application de base:
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    import javax.swing.*;
    import java.awt.*;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.awt.event.*;
    import javax.swing.border.*;
    import java.awt.Color;
    import javax.swing.JPanel;
    import javax.swing.JButton;
    import java.awt.Graphics;
     
    class BarreDeMenu extends JMenuBar implements ActionListener
    {
        private PanelGauche pg;
        private JMenu menu1 = new JMenu("Mode");
        private JMenu menu2 = new JMenu("Couleur");
        private JMenu menu3 = new JMenu("?");
     
     
        public BarreDeMenu(PanelGauche pg)
        {
     
            this.pg=pg;
     
            this.add(menu1);
            this.add(menu2);
            this.add(menu3);
     
            JRadioButtonMenuItem radio1 = new JRadioButtonMenuItem("Rouge");
            JRadioButtonMenuItem radio2 = new JRadioButtonMenuItem("Bleue");
            JRadioButtonMenuItem radio3 = new JRadioButtonMenuItem("Vert");
     
            ButtonGroup bg = new ButtonGroup();
            bg.add(radio1);
            bg.add(radio2);
            bg.add(radio3);
            JMenuItem item11 = new JMenuItem("Quitter");
     
            JMenuItem item31 = new JMenuItem("Aide");
            JMenuItem item32 = new JMenuItem("A propos");
     
            menu1.add(item11);
     
            menu2.add(radio1);
            menu2.add(radio2);
            menu2.add(radio3);
     
            menu3.add(item31);
            menu3.add(item32);
     
     
            item11.addActionListener(this);
            radio1.addActionListener(this);
            radio2.addActionListener(this);
            radio3.addActionListener(this);
            item31.addActionListener(this);
            item32.addActionListener(this);
     
        }
     
     
        public void actionPerformed(ActionEvent e) 
        {
            String s = e.getActionCommand();
     
            if(s.equals("Quitter")) 
            {
     
                int rep = JOptionPane.showConfirmDialog(null,"\nVoulez-vous quittez le programme?", "Attention",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
     
                if (rep==JOptionPane.YES_OPTION)
                {
                    System.exit(0);
                }
            }
     
            else if(s.equals("Aide")) 
            {
     
                JOptionPane.showMessageDialog(null, "L'application", "Aide", JOptionPane.INFORMATION_MESSAGE);
            } 
     
            else if(s.equals("A propos")) 
            {
                JOptionPane.showMessageDialog(null, "Copyright © 2010-2011", "A propos", JOptionPane.INFORMATION_MESSAGE);
            } 
     
            else if(s.equals("Rouge")) 
            {
                pg.setPaintColor(Color.red); 
            } 
     
            else if(s.equals("Bleue")) 
            {
                pg.setPaintColor(Color.blue); 
            } 
     
            else if(s.equals("Vert")) 
            {
                pg.setPaintColor(Color.green); 
     
            } 
     
        }
     
    }
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.BufferedImage;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.awt.Graphics;
    import javax.swing.border.*;
    import java.awt.Color;
     
    public class PanelGauche extends JPanel implements MouseMotionListener,MouseListener
    {
     
        private boolean mode_dessin;
        private Point old_point,new_point;
        private Color color = Color.black;
     
        public PanelGauche()
        {
            super();
    	   setPreferredSize(new Dimension(400, 400));
            old_point = new Point();
            new_point = new Point();
            mode_dessin=false;
     
            this.addMouseListener(this);
            this.addMouseMotionListener(this);        
     
        }
     
     
        public void mouseMoved(MouseEvent event)
        {
            new_point = event.getPoint();
            if(mode_dessin)
    	   {
    			this.repaint(); // on dessine dans le panneau
    	   }
     
        }
     
        public void mouseDragged(MouseEvent event)
        {
    		mouseMoved(event);
        }
        public void mouseReleased(MouseEvent event)
        {	
    		mode_dessin = false;
    		this.repaint(); 
        }
     
        public void mouseClicked(MouseEvent event){}
        public void mouseEntered(MouseEvent event){}
        public void mouseExited(MouseEvent event){}
     
        public void mousePressed(MouseEvent event)
        {
    		mode_dessin = true;
    		old_point = event.getPoint();
        }
     
        public void setPaintColor( Color color) 
        {
            this.color = color;
        }
     
        public void paintComponent(Graphics g)
        {   
            if(!mode_dessin)
    	   {
    			dessinerFond(g);
            }
    	   else if(mode_dessin)
    	   {
    		    setPaintColor(color);
    		    g.setColor(color);
    		    g.drawLine( (int) old_point.getX(), (int) old_point.getY(), (int) new_point.getX(), (int) new_point.getY() );
    		    old_point = new_point;
    	   }
        }
     
        //Dessine le fond
        private void dessinerFond(Graphics g)
        {
    		g.setColor(Color.WHITE);
    		g.fillRect(0, 0, getWidth(), getHeight());
     
        }
     
    }
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    import javax.swing.*;
    import java.awt.*;
    import javax.swing.border.*;
    import java.awt.Color;
     
    /**
     * Cette classe permet de construire la fenetre et de  lancer l'application
     */
     
    public class Application extends JFrame
    {
        private PanelGauche pg;
        private BarreDeMenu barreDeMenu;
     
     
        public Application() 
        {
    		super("Application");
    		pg = new PanelGauche();
    		barreDeMenu = new BarreDeMenu(pg);
    		getContentPane().add(pg);
    		setJMenuBar(barreDeMenu);
        }
     
        public static void main(String[] args) 
        {
    		JFrame fenetre = new Application();
    		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		fenetre.setResizable(true);
    		fenetre.pack();
    		fenetre.setLocationRelativeTo(null);
    		try 
    		{
    			fenetre.setIconImage(new ImageIcon(Application.class.getResource("images/icone/icone.png")).getImage());
    		} 
    		catch(NullPointerException e)
    		{
    		//
    		}
    		fenetre.setVisible(true);
    		}
    }

Discussions similaires

  1. Réponses: 27
    Dernier message: 26/10/2011, 14h05
  2. architecture mvc etxml/xsl
    Par kiko2005 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 14/08/2009, 14h52
  3. Utiliser une architecture MVC
    Par misterniark dans le forum MVC
    Réponses: 5
    Dernier message: 03/11/2006, 22h35
  4. [Spring MVC] Architecture MVC dans spring
    Par Alec6 dans le forum Spring Web
    Réponses: 4
    Dernier message: 11/10/2006, 12h35
  5. Architecture MVC
    Par Bobleponge dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 20/06/2005, 10h16

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