[Conception] MVC - Déclarer l'écouteur d'evenement dans la vue.
Bonjour,
je cherche à déveloper une application mvc.
J'ai donc développer une classe model:
Code:
1 2 3 4
|
public class Model {
[..]
} |
une classe Gui pour la vue. Dans cette classe il y a plusieurs classes internes pour différents éléments de mon interface graphique. (par exemple des formulaires de saisies)
Code:
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
|
public class Gui {
private Model model;
public Gui(Model model) {
this.model=model;
[..]
}
[..]
class NewClient {
private JButton validNewClient;
NewClient(){
validNewClient=new JButton("Valider");
validNewClient.setActionCommand("ValidNewClient");
validNewClient.addActionListener(....); //J'aimerais l'ajouter à une instance de la classe Controller
}
}
[..]
class NewFournisseur{
private JButton validNewFournisseur;
NewFournisseur(){
validNewFournisseur=new JButton("Valider");
validNewFournisseur.setActionCommand("ValidNewFournisseur");
validNewFournisseur.addActionListener(....); //J'aimerais l'ajouter à une instance de la classe Controller
}
}
[..] |
et une class Controller:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public class Controller implements ActionListener{
private Model model;
private Gui vue;
public Controller(Model model,Gui vue) {
this.model=model;
this.vue=vue;
[..]
}
public actionPerformed(ActionEvent e) {
//Traitement
}
} |
et une classe Main
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
public class Main {
Model model
Gui vue;
Controller controller;
public Main(){
model=new Model();
vue=new Gui(model);
controller=new Controller(model,vue);
}
} |
En faisant comme ceci, je pense respecter le design pattern mvc. Mais mon souci réside dans l'ajout des boutons de validations des formulaires dans l'écouteur d'action avec la méthode addActionListener.
En effet, je dois les ajouter dans une instance de Controller.
Le hic est que la vue ne possède pas de variables de classe Controller. Je pourrais l'ajouter mais dans ce cas, je ne respecte plus le design pattern mvc.
Comment puis-je faire d'après vous ?
Merci d'avance.
++