Les actions
Le but dans cet exercice est d'utiliser des actions génériques (Action et AbstractAction) définissant du code et utilisables (sollicitables) dans différentes cas (menus, boutons, touches clavier, etc.).
Plus particulièrement, et dans un premier temps, on veut construire un petit éditeur de textes permettant de:
Le texte en lui-même sera représenté par un JTextArea qui coupe les lignes trop longues, de préférence sans couper les mots, et bénéficiant d'ascenseurs lorsque cela est rendu nécessaire par la longueur du texte (utiliser un JScrollPane pour cela).
Pour le reste, créer une JFrame fournissant des accès à ces différentes fonctionnalités (actions), sous les forme simultanées suivantes.
On pourra par exemple utiliser les icônes suivants :
Dans le même esprit, on cherche à ajouter à la barre de menus un
menu Edition avec des entrées offrant des fonctionnalités
permettant de mettre en gras ou en italique une partie d'un texte.
Il faudra dans un premier temps remplacer le JTextArea par un
JEditorPane car le JTextArea ne connait pas les
styles. Ensuite, il faudra associer un StyleEditorKit (du
package javax.swing.text) au JEditorPane pour lui
indiquer que le texte contenue peut posséder un style.
Les fonctionnalités de mise en gras, italique etc. existent déjà et
sont regroupés dans une structure associative (ActionMap) qui
permet d'obtenir l'action associée à un nom donné. Demander les
fonctionnalités d'un JTextArea se fait en utilisant la
fonction getActionMap().
On désire maintenant avoir un comportemnet particulier de notre éditeur de texte, en particulier assurer la cohérence sur cetrains points tel que: