Voici un exemple d'utilisation d'une Action pour créer un bouton dans une barre d'outils et un menu item qui effectuent la meme fonction :Un nouveau JButton (pour la JToolBar) ou JMenuItem (pour le JMenu ou le JPopupMenu) qui est automatiquement ajouté à la barre d'outils ou au menu. Le bouton ou le menu item utilisent en plus automatiquement l'icone et le texte spécifié par l'Action. Un action listener est enregistré (l'objet Action) auprès du bouton ou du menu item. Une gestion centralisé de l'état d'accessibilité du bouton ou du menu item.
|
Pour un bouton ou un menu, pour tirer parti de l'utilisation d'une Action, vous devez créer le composant en utilisant la méthode add(Action) des classe JToolBar, JMenu, ou JPopupMenu. Actuellement, on ne dispose pas d'autre API que addActionListener(ActionListener) pour connecter une Action à un composant qui existe déjà. Par exemple, bien que vous puissiez ajouter un objet Action en tant qu'action listener à n'impote quel bouton, le bouton ne sera pas notifié lorsque l'action sera rendue non-accessible.
Pour créer un objet Action, on crée généralement
une sous-classe de la classe AbstractAction
et de l'instancier ensuite. DAns la sous-classe, vous devez implémenter
la méthode actionPerformed pour réagir de manière
approprié lorsque des événements ont lieu. Voici un
exemple de création et d'instanciation d'une sous-classe de la classe
AbstractAction
:
|
Voici une image de l'application qui utilisent les actions pour implémenter trois fonctionnalités :
Voici ce que voit l'utilisateur lorsque que l'action "Go left" est non accessible :
Essayez ceci :
- Compilez et exécutez l'application. The source file is ActionDemo.java. Vous aurez besoin aussi des trois images suivantes.
- Sélectionnez le premier item du menu à gauche (Menu > Go left).
Le text area affiche les informations identifiants à la fois la source de l'événement et l'action listener qui a recu l'événement.- Appuyez maintenant sur le bouton le plus à droite de la barre d'outils.
Le text area affiche de nouveau les informations relatives à l'événement. Remarquez que bien que la source de l'événement soit différente, les deux événements ont été traités par le meme action listener: l'objet Action avec lequel les composants ont été créés.- Sélectionnez maintenant le premier item du menu Action State.
Ceci provoque la non accessibilité de l'objet Action "Go left", qui à son tour va rendre non accessible les composants auquel il est associé (le bouton et le menu).
Voici le code permettant de rendre non accessible l'action "Go left" :
|
Après avoir crée les composants en utilisant une Action, vous aurez probablement besoin de les adapter. Par exemple, vous voudriez bien régler la bulle d'aide associée au bouton. Ou bien, vous aimeriez bien modifier l'apparence d'un des composants en rajoutant ou enlevant l'icone ou le texte. Par exemple, ActionDemo.java ne possède pas d'icones dans ses menus, ni de texte dans ses boutons, ni de bulles d'aide pour ses boutons. Voici le code qui s'accomplit de cette tache :
button = toolBar.add(leftAction);
button.setText(""); //un bouton avec seulement une icone
button.setToolTipText("This is the left button");
menuItem = mainMenu.add(leftAction);
menuItem.setIcon(null); //on ne veut pas d'icone dans le menu
Créer et utiliser une Action Créer un composant controllé par une Action