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