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 :

améliorer Interface et donnée


Sujet :

avec Java

  1. #1
    Membre actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 253
    Points
    253
    Par défaut améliorer Interface et donnée
    Bonsoir,

    J'apprend actuellement à me servir des interfaces graphiques en Java et j'aimerai quelques avis sur la manière de structurer une application Java.

    Par exemple dans un exemple comme ceci :
    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
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.*;
     
    public class gui extends JFrame{
     
    		private Container c;
    		private Color valeurCouleur[] = {Color.red,Color.blue,Color.yellow,Color.green};
    		private JRadioButtonMenuItem optionCouleur[], optionPolice[];
    		private JCheckBoxMenuItem optionStyle[];
    		private ButtonGroup groupeCouleur, groupePolice;
    		private JLabel label;
    		private int style;
     
     
    		public gui(){
     
    			c = getContentPane() ;
    			c.setLayout(new FlowLayout());
     
    			// Création du menu Fichier
     
    			JMenu menuFichier = new JMenu("Fichier");
    			menuFichier.setMnemonic('F');
     
    			// Definir le sous-menu A propos de ...
     
    			JMenuItem optionAPropos = new JMenuItem("A propos de ...");
    			optionAPropos.addActionListener( 
     
    					new ActionListener(){
     
    					public void actionPerformed(ActionEvent e){
    						JOptionPane.showMessageDialog(gui.this," Exemple d'utilisation des menus","A propos de ...", JOptionPane.PLAIN_MESSAGE);
    					} 
    				}
    			);
     
    			menuFichier.add(optionAPropos);
     
    			// Créer la barre de menu
     
    			JMenuBar barre = new JMenuBar();
    			setJMenuBar(barre);
    			barre.add(menuFichier);
     
    			// Definir le sous menu Quitter 
     
    			JMenuItem optionQuitter = new JMenuItem("Quitter");
    			optionQuitter.setMnemonic('Q');
     
    			optionQuitter.addActionListener(
    				new ActionListener()
    				{
    					public void actionPerformed(ActionEvent e){
    						System.exit(0);
    					}
    				}
     
    			);
     
    			menuFichier.add(optionQuitter);
     
    			// Créer le menu Format , ses sous-menus et leurs options 
     
    			JMenu menuFormat = new JMenu("Format");
    			menuFormat.setMnemonic('r');
     
    			//Créer le sous menu couleurs
     
    			String couleur[] = {"rouge","Bleu","jaune","Vert"};
     
    			JMenu menuCouleur = new JMenu("Couleurs");
     
    			optionCouleur = new JRadioButtonMenuItem[couleur.length];
    			groupeCouleur = new ButtonGroup();
    			GestionnaireOption gestionnaireOption = new GestionnaireOption();
     
    			for(int i=0;i<couleur.length;i++)
    			{
    				optionCouleur[i] = new JRadioButtonMenuItem(couleur[i]);
    				menuCouleur.add(optionCouleur[i]);
    				groupeCouleur.add(optionCouleur[i]);
    				optionCouleur[i].addActionListener(gestionnaireOption);
    			}
     
    			optionCouleur[0].setSelected(true);
    			menuFormat.add(menuCouleur);
     
    			// Création menu Police
     
    			String nomPolice[] = {"Serif","Arial","Times New Roman"};
    			JMenu menuPolice = new JMenu("Police");
     
    			optionPolice = new JRadioButtonMenuItem[nomPolice.length];
    			groupePolice = new ButtonGroup();
     
    			for(int i=0;i<nomPolice.length;i++)
    			{
    				optionPolice[i] = new JRadioButtonMenuItem(nomPolice[i]);
    				menuPolice.add(optionPolice[i]);
    				groupePolice.add(optionPolice[i]);
    				optionPolice[i].addActionListener(gestionnaireOption);
    			}
     
    			menuFormat.add(menuPolice);
    			barre.add(menuFormat);
     
     
    			label = new JLabel("Exemple de label ^^");
    			label.setForeground(Color.magenta);
    			label.setFont(new Font("Arial",Font.PLAIN,24));
     
    			c.setBackground(Color.blue);
    			c.add(label);
     
    			setSize(500,200);
    			setVisible(true);
     
    		}
     
    		private class GestionnaireOption implements ActionListener{
    			public void actionPerformed(ActionEvent e){
    				for(int i=0;i<optionCouleur.length;i++)
    				{
    					if(optionCouleur[i].isSelected())
    					{
    						label.setForeground(valeurCouleur[i]);
    					}
    				}
     
    				for(int i=0;i<optionPolice.length;i++)
    				{
    					if(e.getSource()==optionPolice[i])
    					{
    						label.setFont(new Font(optionPolice[i].getText(),style	,24));
    					}
    				}
    			}
    		}
    }
    Comment je peux séparer événement , graphique et donnée efficacement ? parce que dans un projet plus gros , travailler ainsi ça serait du suicide j'imagine...

    Bien sûr la séparation en plusieurs class est normal mais une façon de synchroniser tous cela ?

    Merci pour toutes idées ,remarques etc

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Le pattern MVC est très utilisé pour ce type de problématique :
    - (Modèle) une couche de données
    - (Vue) une couche d'affichage de celles-ci
    - (Contrôleur) une couche de contrôle gérant les contrôles de la vue et impactant les données en conséquences

    Voici un tuto plutôt généraliste et épuré sur la question : http://baptiste-wicht.developpez.com...onception/mvc/
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

Discussions similaires

  1. Amélioration base de données avec HERITAGE
    Par Anthony_C dans le forum Développement
    Réponses: 10
    Dernier message: 14/05/2014, 14h12
  2. [Suggestion] Amélioration interface d'upload avatar
    Par LittleWhite dans le forum Evolutions du club
    Réponses: 0
    Dernier message: 06/02/2012, 20h35
  3. Réponses: 17
    Dernier message: 09/06/2008, 17h02
  4. Amélioration base de donnée
    Par Louis45 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/05/2008, 08h19
  5. Projet c++ separer interface/gestion donnée
    Par adurandet dans le forum C++
    Réponses: 12
    Dernier message: 04/10/2007, 08h54

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