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

Interfaces Graphiques en Java Discussion :

JLabel :Plantage s'il n'y pas de JOptionPane


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut JLabel :Plantage s'il n'y pas de JOptionPane
    Bonjour à tous!

    Comme indiqué dans le titre, je planche sur un problème... qui me paraît totalement illogique!

    Contexte :
    Une liste d'action, dont je souhaite faire varier le cours de manière peu significative, toutes les 3 secondes. Pas de soucis pour le Modifier.

    MAIS, je souhaite aussi modifier la couleur du JLabel concernant le cours de l'action... Par ex vert si le cours monte, rouge s'il descend, et ce pour chaque action.

    Problème: Dans ma boucle pour chaque action,
    SI je met à la fin un petit message (JOptionPane.showmessageDialog), le changement de couleur s'effectue, le cours varie

    Si je n'en met pas, la couleur ne change pas, et seul le cours varie!

    Niveau graphique:
    • Sans Message: Le cours varie toutes les trois secondes.
    • Avec Message: Le cours change.La couleur change. le message s'affiche, re rebelote à l'action suivante.


    Comment se fesse?


    Voici le code concerné:

    Un thread dans une classe, qui toutes les 3 secondes appel la méthode suivante:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	public void variationCours(JPanel panTemp){		
     
    		for (int i = 0; i <= this.nbListeAction -1; i++){
     
    			// Définition d'un nombre aléatoire qui symbolisera une variation "non significative" d'un cours. (de -0.7% à +0.7%)
    			Random variationAleatoire = new Random();
    			int valeur = -7 + variationAleatoire.nextInt(14);
     
    			double coursTemp = this.get(i).getCoursAction();
    			double newCoursTemp =  this.get(i).getCoursAction() + (this.get(i).getCoursAction() * valeur / 100);
     
                            // Appel de la méthode de variation d'action
    			this.get(i).setCoursAction(valeur);	
     
     
    			//Changement de couleur du cours de l'action : Vert si le cours monte, rouge si descend
    				try {
    					if (coursTemp <=  newCoursTemp) {
    						panTemp.getComponent(i*3 +1).setForeground(Color.green);
     
    					}
     
    					else panTemp.getComponent(i*3+1).setForeground(Color.red);
    					} catch (Exception e) {
    					// TODO Auto-generated catch block
    					JOptionPane.showMessageDialog(null, "Erreur à l'indice : "  + i);
    				}
     
    					// Quand je met le message, la couleur se modifie, le cours se modifie. sinon seul le cours se modifie!
    					//JOptionPane.showMessageDialog(null, "bouh");
     
     
    		}
    	}

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    La solution à ton problème se trouve dans ce tuto qui explique comment travailler en Swing avec des threads, sachant que les toolkits UI ne sont pas de API ThreadSafe (quelque soit la techno ou le langage)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut
    Coucou!!!
    Merci beaucoup!!
    je viens à peine de découvrir le Thread, et je n'avais jamais entendu parlé de l'EDT^^

    La fac du forum m'a aider à résoudre mon souci !

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JLabel.setVisible qui ne s'execute pas
    Par IMPRO dans le forum Général Java
    Réponses: 5
    Dernier message: 09/12/2011, 16h27
  2. [JDOM] Plantage inexpliqué en execution, mais pas en débug
    Par Marge dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 20/04/2011, 14h25
  3. sous XP-PRO plantage en RAID 1 mais pas en NORMAL
    Par Mass54 dans le forum Windows XP
    Réponses: 0
    Dernier message: 08/01/2010, 09h00
  4. Réponses: 11
    Dernier message: 20/03/2006, 14h42
  5. [winXP][plantage] ftlmgr.sys ne charge pas, qui la ?.
    Par arnolem dans le forum Windows XP
    Réponses: 10
    Dernier message: 10/06/2005, 17h35

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