Sync JMenu ButtonGroups avec JToolBar ButtonGroups
Question
Imaginez que je fais simple traitement de texte avec Java Swing. J'ai un ensemble d'actions écrites pour effectuer la justification du texte. Sur la barre de menus, j'ai un menu:
View Left Justify Center Jusitfy Right Justify
Il est composé de JRadioButtonMenuItems et un ButtonGroup pour assurer qu'un seul élément est sélectionné à un moment donné.
De plus, imaginez que j'ai une barre d'outils équivalent composé de JToggleButtons et encore une ButtonGroup pour garantir que seul bouton peut être actif à un moment donné.
La « justify gauche » JRadioButtonMenu et JToggleButton sont initialisés en utilisant la même action, et ainsi de suite avec les autres éléments.
Ma question est la suivante: quelle est la meilleure méthode pour syncronizing les deux groupes? Si je clique sur « droit justify » icône dans la barre d'outils, je veux que le groupe dans le menu pour être mis à jour en conséquence, et vice versa.
La solution
I après beaucoup de recherches, je trouve des informations ici . En gros, vous pouvez ajouter à la méthode actionPerformed de votre action:
action.putValue(Action.SELECTED_KEY, Boolean.TRUE);
Et cela fera tout le travail pour vous!
Malheureusement, les tutoriels officiels Sun ne couvrent pas cet aspect (ou du moins je ne l'ai pas repérer), d'où la difficulté à repérer une approche simple pour résoudre mon problème.
Autres conseils
Si vous utilisez les actions Swing les composants doivent être désactivées / activées automatiquement si l'action elle-même est. Vous pouvez vous inscrire en tant propertyListener à une action et de surveiller d'autres changements. Regardez http://java.sun.com/ JavaSE / 6 / docs / api / javax / Swing / Action.html pour une liste détaillée dont les propriétés sont disponibles.
Par contre (moi encore), vous pourriez simplement écrire 1 auditeur dans une classe externe. Un écouteur pour le menu et la barre d'outils. Lorsque 1 change, l'auditeur aussi bien les mettre à la nouvelle valeur.