Previous Up Next

2  La classe TransferHandler

La classe TransferHandler permet de définir les méthodes d’importation et d’exportation de données. Chaque composant possède la méthode setTransferHandler (définie dans JComponent) qui permet soit de remplacer un TransferHandler défini par défaut ou de spécifier un TransferHandler pour un composant qui ne supporte pas le transfert de données initialement.

2.1  Transfert de propriétés JavaBeans

Les JavaBeans sont des composants Java réutilisables et facilement intégrables au sein d’un IDE. A chaque composant Swing tel que JLabel correspond un JavaBean dont les propriétés peuvent être listées en utilisant un IDE tel que NetBeans (Figure 2).


Figure 2: Propriétés JavaBean du composant JLabel.

Question 2. Réalisez une interface comprenant un composant JLabel et deux composants JFormattedTextField. Modifiez la police par défaut de chacun de ces composants et ajoutez les TransferHandler correspondants pour transférer la propriété de police d’un composant à un autre. Pour détecter le geste de drag sur le JLabel, vous spécifierez le listener adéquat avec la méthode addMouseMotionListener dans lequel vous appellerez la méthode exportAsDrag qui se charge d’appeler les méthodes d’exportation de données (voir le cours pour plus de détails).
Testez les opérations de drag and drop et de copier-coller entre les différents composants. Notez qu’il est nécessaire de sélectionner du texte pour pouvoir démarrer le drag du JFormattedTextField. Comment résoudre ce problème?
Lancez une deuxième instance de votre application et testez les opérations de transfert entre les deux fenêtres.


Figure 3: Transfert de propriétés JavaBeans entre composants.

2.2  Ecrire son propre TransferHandler

Nous allons ici créer notre propre TransferHandler afin de pouvoir transférer du texte entre un JLabel et d’autres composants Java ou des applications externes.

2.2.1  Exportation de chaînes de caractères

Question 3. Créez une classe qui hérite de TransferHandler et définissez les méthodes getSourceActions, createTransferable et exportDone (voir le cours pour avoir plus de détails sur la façon de définir ces méthodes). Il doit être possible de copier ou de déplacer le texte du JLabel. Testez et vérifiez qu’il est possible de copier ou déplacer le texte du JLabel vers un autre composant qui accepte le texte ou une autre application.

2.2.2  Importation de chaînes de caractères

Question 4. Définissez les méthodes canImport et importData pour vérifier la possibilité d’importation de données et effectuer l’importation lorsque cela est possible. Pour l’importation, vous pourrez par exemple concaténer le texte importé au texte existant.


Previous Up Next