Actions

Un élément essentiel d'une bonne interface utilisateur est la cohérence. Ceci signifie que parmi toutes les actions potentielles, seules les actions vraiment possibles sont offertes à l'utilisateur. Les autres apparaissent aussi dans les menus ou dans la barre d'outils mais elle ne sont pas activées. Elle apparaissent alors grisées dans l'interface.

Un autre élément d'une bonne interface est que les actions sont accessibles de plusieurs façons à l'utilisateur : entrée dans un menu, icône dans la barre d'outils et raccourci clavier. Il est alors important que toutes ces façons d'accéder à une même action soient gérées de manière cohérente, c'est-à-dire activées et désactivées simultanément et qu'elles produisent bien la même action.

Les actions Swing facilitent la tâche du programmeur en offrant une gestion centralisée d'une action. Cet objet regroupe les différents aspects d'une action ainsi que la méthode appelée lorsque l'action est effectuée.

L'interface Action étend l'interface ActionListener qui définit la méthode actionPerformed(ActionEvent event) qui est appelée pour que l'action soit effectuée. Pour faciliter le travail du programmeur, une classe abstraite AbstractAction implémente de manière triviale l'interface Action. La méthode actionPerformed() est définie mais ne fait rien. Une bonne façon de programmer une classe implémentant Action est de dériver la classe AbstractAction et de redéfinir les méthodes nécessaires.

Pour la gestion de ces différents attributs, les actions utilisent le cadre des JavaBeans. Les différents getter et setter des attributs sont regroupés en deux méthode getValue(String key) et setValue(String key, Object value). Pour chacun des différents attributs, est définie une chaîne constante qui est passée en premier paramètre aux méthodes getValue() et setValue(). Par exemple, pour changer le nom de l'action dans les menus, il faut passer la chaîne "NAME" en paramètre.