cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
13 mai 2006 à 10:34
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
13 mai 2006 à 14:28
Bonjour à tous,
Je me pose une question : J'ai fait une barre d'outils avec plusieurs boutons, je gère le click sur chacun des boutons, là pas de problème : chaque bouton fait ce qu'il est censé faire. Par contre, comment je pourrais faire pour rajouter un ActionListener de l'extérieur pour que, lorsque l'utilisateur clique sur un bouton, ca lui déclenche un ActionListener pour lui, et non pour ma barre d'outils.
En gros, j'aimerai faire un ActionListener qui se déclenche juste avant d'éxécuter le code du bouton cliqué de ma barre d'outils afin qu'il puisse annuler l'action si besoin. Donc dès qu'il clique, l'ActionListener est activé, et il intercepte l'événement, il fait les tests qu'il veux, puis il annule ou non le code qui doit s'éxécuter dans le bouton cliqué.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 13 mai 2006 à 14:28
C'est bon, j'ai trouvé une astuce (je me demande même si c'est pas comme cà que sont implémentées les Listeners en Java) :
J'ai crée une classe abstraite, avec la méthode ActionPerformed en abstract, et je me sers de cette action pour déclencher l'événement à partir de mon bouton, je récupère la valeur de la variable membre cancel de la classe pour savoir si je dois éxécuter le code du bouton ou pas. En fait, c'était bien plus simple que ce que je m'imaginais !
Ce qui donne (si ca interesse d'autres personnes) :
public abstract class CButtonActionListener {
public abstract void actionPerformed(ActionEvent arg0);
}
Et dans la classe de ma barre d'outils :
public void addButtonBeforeClickListener(CButtonActionListener oButtonListener) {
m_oButtonsBeforeClick = oButtonListener;
}
En cas de click sur le bouton Nouveau :
m_oButtonsBeforeClick.setCancel(false);
m_oButtonsBeforeClick.setMessage("Add");
m_oButtonsBeforeClick.actionPerformed(null);
if (!m_oButtonsBeforeClick.getCancel()) {
createNew();
}
scaryman
Messages postés492Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention16 mai 200712 13 mai 2006 à 12:25
Salut
Si j'ai bien compris, tu veux faire certains tests avant d'exécuter vraiment le code affecté à ton bouton.
Ben moi je ferais les tests dans l'ActionListener du bouton qui, suivant un booléen continuerait ou pas l'exécution :
monBouton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ) {
boolean ok = monTest();
if(ok) {
//on continue
}
}
}
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 13 mai 2006 à 14:01
C'est pas tout à fait cà : J'ai créé, par exemple, un bouton Enregistrer qui, à partir de JTextField que l'utilisateur à lier à ma classe de gestion de la barre d'outils, enregistre le contenu de ces JTextField dans une base de données.
Maintenant, ce que j'aimerai faire, c'est lorsque l'utilisateur de ma classe clique sur le bouton enregistrer, qu'il puisse annuler le code contenu dans ma classe, sans toucher au code bien entendu.
Donc en gros : dans ma barre d'outils, j'ai rajouté les ActionListeners qui me faut pour faire ce que cont censés faire les boutons, mais maintenant, je voudrait que l'utilisateur puisse à son tour rajouter des ActionListeners sur ma barre d'outils afin qu'il puisse programmer lui même les actions de certains boutons (annulation du bouton enregistrer par exemple).