myTSwingActions, une API pour la création et l'utilisation d'Actions Swing
Bonjour,
Je voudrais vous présenter une petite API que j'ai développé.
myTSwingActions permet une utilisation très simple des Actions Swing avec une simple annotation.
Voici un exemple simple pour illustrer son utilisation :
Soit un code "classique" d'une fenêtre Swing utilisant une Action
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public class MyFrame extends JFrame {
private JButton actionButton;
private JMenuItem actionMenuItem;
public MyFrame() {
// Components initialization
...
// Building actions
Action myAction = new MyAction();
actionButton.setAction(myAction);
actionMenuItem.setAction(myAction);
}
/** A customized Action. */
private final class MyAction extends AbstractAction {
MyAction() {
// Loading and setting action properties
ResourceBundle resources = ...;
putValue(NAME; resources.getString("MyAction.name"));
putValue(...);
}
public void actionPerformed(ActionEvent evt) {
// In most cases, we want actions to be performed out of the EDT.
new Thread() {
public void run() {
// Do something
}
}.start();
}
}
} |
On voit bien qu'une grosse partie du code écrit sert à la déclaration et l'implémentation de l'Action. Avec plusieurs actions on se retrouve vite à réécrire encore et encore plusieurs fois le même genre de code.
Afin de gagner en temps et en lisibilité, l'API myTSwingAction vous propose d'utiliser l'annotation @Action pour ne vous concentrer que sur ce qui vous intéresse vraiment
- Ce que l'action fait vraiment.
- Les composants utilisant l'action.
et vous affranchir de tout le code pompeux de l'implémentation de l'Action.
Voici le code équivalent avec myTSwingActions :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class MyFrame extends JFrame {
@Action("myAction")
private JButton actionButton;
@Action("myAction")
private JMenuItem actionMenuItem;
public MyFrame() {
// Components initialization
...
// Building actions
new ActionsManager(this).buildActions();
}
/** A customized Action. */
@Action
public void myAction() {
// Do something
}
} |
L'API est téléchargeable ici, ou si vous utilisez maven vous pouvez simplement ajouter la dépendance suivante :
Code:
1 2 3 4 5
| <dependency>
<groupId>com.mytdev</groupId>
<artifactId>myt-swing-actions</artifactId>
<version>1.2.0</version>
</dependency> |
Vous trouverez également plus de détails sur les fonctionnalités de l'API ici (en anglais).
N'hésitez pas à me faire vos retour ;)
le y@m's