Bonjour ,
Je développe actuellement une interface graphique comme "exercice" pour assimiler le Java.
Mon application se décompose en 3 JPanels, chaque JPanel contenant une JToolBar et un JList.
L'idée, c'est de faire un petit DataManager, ou
- la première liste contient les Catégories
- la deuxième liste les Artistes de chaque catégorie
- et la dernière les Œuvres de chaque artistes.
Note : Je précise que je ne DOIS pas utiliser de base de données, mais des collections Java, afin de les maitriser.
J'ai organisé mes données comme ceci :
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private List<String> listCategories; private Map<String, List<String>> listArtists; private Map<String, List<String>> listWorks;
que j'ai initialisés :
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 this.listCategories = new ArrayList<String>(); this.listArtists = new HashMap<String, List<String>>(); this.listWorks = new HashMap<String, List<String>>();
Donc, en résumé, ma liste listCategories contient les catégories directement,
ma liste listArtists contient en clé, la catégorie et en valeur la liste des artistes et ma liste listWorks contient en clé les artistes et en valeur la liste des œuvres associées.
Dans ma Toolbar j'ai 3 boutons qui me permettent :
- d'ajouter
- de supprimer
- de modifier
les valeurs de mes listes.
Pour l'instant j'ai utilisé le pattern Observer afin de lier mes listes, et d'afficher la liste correspondante à la catégorie en amont et cela fonctionne à merveille. Mais je suis confronté au problème de l'ajout ou de la modification.
Problème :
Je ne sais pas comment placer mes observers, afin d'avoir accès à la valeur sélectionnée de toutes mes listes.
Du coup, je fais écouter le panel sur sa toolbar associée,
mais en faisant ainsi, je n'ai accès qu'à la valeur sélectionnée de la liste du panel en question ... pas des autres.
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 this.categoryPanel.toolbar.addToolbarObserver(this.categoryPanel); this.artistPanel.toolbar.addToolbarObserver(this.artistPanel); ...
Note : Tous les composants contenus dans un composants sont des attributs de celui-ci.
Désolé mon problème est spécifique et complexe, je posterai bien un diagramme de classe pour plus de clarté ... Merci à tous ceux qui se pencheront sur mon problème pour me dire comment procéder pour gérer mon ajout et ma modification dans mes listes.
Partager