Bonjour,
J'ai trois solutions à un problème, mais je ne sais pas laquelle choisir! (et c'est un autre problème ^^) Bref, je développe un logiciel pour PDA (donc avec ressources limitées) et j'ai une IG avec plein de trucs dans mes menus. Voici comment j'ai organisé mes ActionListeners jusqu'à présent:
Mais je me suis dit que créer une seule classe de Listener serait peut être plus économique pour la memoire:
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 // Action classes class NewAction implements ActionListener { public void actionPerformed(ActionEvent event) { newDocument(); } } class OpenAction implements ActionListener { public void actionPerformed(ActionEvent event) { loadDocument(); } } class SaveAction implements ActionListener { public void actionPerformed(ActionEvent event) { saveDocument(); } } // related methods void newDocument() {} void saveDocument() {} void loadDocument() {}
ou même encore utiliser une factory (j'ai pas encore l'habitude donc je sais pas si c'est vraiment adapté). Mais je suis embeté car les Listeners étant des classes internes je ne peux créer une classe de factory dans un fichier séparé qui puisse créer ces listeners.
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 enum actionType { newFile, openFile, saveFile } // Special Class Menu Action class MenuAction implements ActionListener { actionType action; MenuAction(actionType actionType) { action = actionType; } public void actionPerformed(ActionEvent arg0) { switch (action) { case newFile: newDocument(); break; case openFile: loadDocument(); break; case saveFile: saveDocument(); break; } } }
Merci pour vos conseils!
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 // Action Factory ActionListener actionFactory(actionType action) { ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) {} }; switch (action) { case newFile: listener = new NewAction(); case openFile: listener = new OpenAction(); case saveFile: listener = new SaveAction(); } return listener; }
Renaud
Partager