Introduction à SwingStates
Nouvelles interactions avec les widgets Swing

Cet exercice a pour but d'illustrer les possibilités offertes par SwingStates pour implémenter de nouvelles techniques d'interaction compatibles avec les widgets Swing. Nous allons voir comment une interaction de type crossing peut être ajoutée à des widgets de type JCheckBox et JButton.

Récupérer le fichier CrossingDemo.java. Ce programme crée une fenêtre, un canvas occupant tout l'espace disponible et une CStateMachine attachée à ce canvas.
Compléter le code de la CStateMachine pour afficher une trace colorée sur le canvas lorsque la souris est déplacée dessus avec le bouton 1 enfoncé (voir cette vidéo).
Créer une série de JCheckBox et de JButton, comme dans la figure ci-dessous. Utiliser la méthode setGlassPane de la classe JFrame et les méthodes setOpaque et setVisible de la classe Canvas pour que le canvas soit placé dans le glass pane de la fenêtre et que son fond soit transparent.
Créer une classe dérivée de JStateMachine qui permette de détecter les interactions de type crossing sur les widgets de type AbstractButton. Faire en sorte que cette machine appelle la méthode doClick du bouton concerné lorsqu'un franchissement est détecté. Attacher une instance de cette classe à la fenêtre. Cette vidéo illustre le résultat à obtenir.
Colorer le fond des JCheckBox pour mieux comprendre ce qui se passe lorsque la souris est déplacée avec le bouton enfoncé au-dessus d'elles.
Raffiner l'interaction de type de crossing en implémentant le double franchissement ou en prenant en compte des aspects temporels.