IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDT/SwingWorker Java Discussion :

Timer.start ne marche pas


Sujet :

EDT/SwingWorker Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 55
    Points : 37
    Points
    37
    Par défaut Timer.start ne marche pas
    Bonjour,

    J'ai une fenetre qui contient un JEditorPane appelé answersPane.
    answersPane contient du texte de type "text/html" par la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    answersPane.setContentType("text/html");
    Je mes des liens hypertexte dans ce JEditorPane.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    answersPane.setText("<a href=\""+  unString +"</a><br>");

    Puis je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    answersPane.addHyperlinkListener
    pour pouvoir effectuer une action lorsque l'utilisateur clique sur un lien écrit dans mon JEditorPane

    Dans la méthode public void hyperlinkUpdate(HyperlinkEvent e)
    de l'HyperlinkListener je veux pouvoir démarrer un objet monTimer de la classe Timer.

    Je veux donc pouvoir faire monTimer.start() quand l'utilisateur a cliqué sur un lien.

    MON PROBLEME EST:

    Mais monTimer.start() ne fonctionne pas (rien ne se passe, et aucune exception levée) lorsque cette méthode est appelée dans public void hyperlinkUpdate.

    Par contre si j'appelle cette méthode ailleurs dans mon de code là pas de problème, mon timer démarre.


    D'après mes recherches je suppose qu'il y a un lien avec l'EDT et les threads, mais je suis complètement perdu.

    Si quelqu'un pourrait me dire comment je dois m'y prendre ça serait super.


    Merci d'avance

    Ci dessous un code résumant mon problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // answersPane est un JEditorPane
     
    	private void gererClic(){
    		answersPane.addHyperlinkListener( new HyperlinkListener(){		
    			public void hyperlinkUpdate(HyperlinkEvent e) {
     
    monTimer.start();   //Ca ne marche pas quand je l'écris ici. 
    //Par contre ça démarre si je place cette méthode ailleurs dans mon code.
    // A l'aide!!
     
    });
    	}

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,
    Il faudrait nous donner l'instanciation de ton timer et de son TimerTask.
    Tu peux même nous donnée l'ensemble de la classe concerné.

    Je te conseil de lire la documentation sur les Timer et les TimerTask.
    http://download.oracle.com/javase/6/...til/Timer.html
    http://download.oracle.com/javase/6/...TimerTask.html

    Sauf si tu utilise le timer Swing.
    Et là je t'encourage à lire ces deux "How use" :
    http://java.sun.com/products/jfc/tsc...AAjgEAAGiHBwA=
    http://download.oracle.com/javase/tu...isc/timer.html
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    J'utilise un Timer swing.

    J'ai lu les tutoriels, mais il me faut un peu de temps pour bien les assimiler.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    1) êtes vous sur de passer dans votre listener?
    2) ailleurs, est-ce la même instance de monTimer?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    désolé pour cette réponse tardive, mais j'avais une grosse journée.
    Au départ, je pensais utiliser les timer pour synchroniser mes threads, mais finalement j'ai utilisé une méthode synchronized qui marche bien.

    Mais je souhaiterais tout de même comprendre le problème (au cas où j'en ai besoin plus tard).

    1) êtes vous sur de passer dans votre listener?
    2) ailleurs, est-ce la même instance de monTimer?
    1) Oui, les autres instructions(println(), récupération du texte du lien cliqué,...) dans la méthode du listener s'exécutent normalement.

    2) monTimer n'est instancié qu'une seule fois dans le code.
    monTimer est un attribut privé de la classe qui l'utilise.

    La méthode monTimer.start() marche très bien en dehors de la méthode du listener, mais rien ne se passe si elle est appelée à l'intérieur
    (Dans la méthode public void hyperlinkUpdate(HyperlinkEvent e) )

    Merci pour votre aide

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    comme dit faudrait voir la classe plus dans son ensemble avec la déclaration du timer etc.

Discussions similaires

  1. Timer ne marche pas
    Par totoAussi dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 03/04/2012, 14h57
  2. [C#][2.0] WinService & Timer : Marche pas !!
    Par NeoMan dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/05/2006, 13h07
  3. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 10h28
  4. Réponses: 9
    Dernier message: 07/05/2003, 13h57
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo