[ActionListener] Ajout d'un actionListener

Résolu
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 13 mai 2006 à 10:34
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Derniè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é.

Merci d'avance
_

Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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 {

private String m_sMessage;
private boolean m_bCancel;

protected boolean getCancel() {
return m_bCancel;
}

public void setCancel(boolean bCancel) {
m_bCancel = bCancel;
}

protected void setMessage(String sMessage) {
m_sMessage = sMessage;
}

public String getMessage() {
return m_sMessage;
}

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();
}

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
3
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
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
}
}
}

Voila
A++
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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).

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
Rejoignez-nous