Problème avec listener

Résolu
ldumont Messages postés 53 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 5 mars 2008 - 25 févr. 2008 à 22:26
ldumont Messages postés 53 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 5 mars 2008 - 26 févr. 2008 à 12:03
Bonsoir,
j'aimerais que quand je clique sur un bouton mon timer se lance, le problème c'est qu'apparement je n'ai pas le droit de mettre directement dans la définition de mon listener : monTimer.launch() alors comment faire??

C'est un pb récurent avec les listeners, je ne vois pas comment modifier la valeur d'un attribut d'une classe autre que celle ou se trouve le listener, au sein du listener.
Merci d'avance

5 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
26 févr. 2008 à 06:57
Si le listener est une class anonyme (on le fait souvent pour les actions d'un bouton) et si monTimer est une variable locale (dans le constructeur), alors il faut la définir la variable comme "final":
final Timer monTimer;
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 févr. 2008 à 23:23
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.3 (Unix)" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

peux-tu montrer ce que tu
as fait stp, histoire de mieux cerner le problème que tu
expose et qui n'est pas super clair (si ce n'est, que ça ne
fonctionne pas ^^)











------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
ldumont Messages postés 53 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 5 mars 2008
26 févr. 2008 à 09:52
voici le main dans lequel j'instancie myClock qui est mon Timer
public static void main(String args[]){
estaca.util.Timer myClock = new estaca.util.Timer(1000) ;
TestTimer tt = new TestTimer() ;
GridBagLayoutDemo grid = new GridBagLayoutDemo();

myClock.addTimerListener(tt) ;

{
myClock.pause();
}

}


et voici le listener du bouton qui doit lancer le timer

public void actionPerformed(ActionEvent e) {

JToggleButton boutonAgir = (JToggleButton) e.getSource();
//Temps t = (Temps);
if (!boutonAgir.getText().equals("START"))
{
boutonAgir.setText("START");
myClock.pause();
}
else//c'est "Appuyé": on l'enlève

{

boutonAgir.setText("PROCESSING");
_myClock.start();

}

}


et quand j'écris ça, éclipse me dit qu'il ne connait pas myClock dans le listener


comme la je l'instancie dans le main et non dans le constructeur, je dois quand même mettre final?
0
ldumont Messages postés 53 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 5 mars 2008
26 févr. 2008 à 09:57
Je viens d'essayer de mettre myClock en final dans le constructeur et la , même dans le main il ne reconnait plus myClock..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ldumont Messages postés 53 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 5 mars 2008
26 févr. 2008 à 12:03
C'est bon! ça fonctionne, comme uhrand me l'avait dit, j'ai mis mon timer en final et je l'ai dégagé du main, puis j'ai déclaré mon listener et ça fonctionne enfin. voici le code:

final estaca.util.Timer myClock = new estaca.util.Timer(1000) ;
TestTimer tt = new TestTimer() ;
myClock.addTimerListener(tt) ;

//--------------Définition du bouton qui permet de lancer et mettre en pause le timer
JToggleButton demarrage = new JToggleButton("START");
demarrage.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JToggleButton boutonAgir = (JToggleButton) e.getSource();
if (!boutonAgir.getText().equals("START"))
{
boutonAgir.setText("START");
myClock.pause();

}
else//c'est "Appuyé": on l'enlève

{
boutonAgir.setText("PROCESSING");
myClock.launch();
}
}
});

Merci beaucoup.

Malheureusement je risque de vous embeter encore car en fait je suis en train d'élaborer un régulateur de vitesse. C'est un projet imposé par mon école et qui doit se faire à 3. J'avais donc l'IHM mais finalement les deux personnes qui sont dans mon groupe m'ont lachée... et donc je me retrouve à devoir aussi faire la partie du calculateur et celle du controleur sachant que le projet doit etre rendu début avril...et que j'ai quand même les autres cours à réviser!
Bref, voila pour la petite histoire. D'où le nombre assez important de questions que je pose sur CodesSource et l'absence de source postée car je passe tout mon temps libre sur le projet.
Voilou et encore merci
0
Rejoignez-nous