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

SWT/JFace Java Discussion :

[SWT] Affichage d'un graphique : pas de MAJ


Sujet :

SWT/JFace Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Points : 52
    Points
    52
    Par défaut [SWT] Affichage d'un graphique : pas de MAJ
    Bonjour à tous,

    j'ai un graphique (classe qui dérive de org.eclipse.swt.widgets.Canvas) que je cherche à mettre à jour, après avoir refait tourner des calculs.

    Je tente de résumer mon code ainsi :
    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
    35
    36
    37
    protected ToChart chart;   // TOChart hérite de Canvas 
     
    protected synchronized void display() {
    	LoadSeriesJob myJob = new LoadSeriesJob("Load data");
            loadSeriesjob.setUser(true);
    	loadSeriesjob.schedule();
     
    }
            // Classe interne qui dérive de org.eclipse.core.runtime.jobs.Job 
    	class LoadSeriesJob extends Job {  
    		public LoadSeriesJob(String name) {
    			super(name);
    		}
     
    		@Override
    		protected IStatus run(IProgressMonitor monitor) {
    			try {
                                    // ici, traitement de calculs ... 
    				Display.getDefault().syncExec(new Runnable() {
    					@Override
    					public void run() {
    						chart.setFocus();
    						chart.redraw();
    						chart.update();
    					}
    				});
    			} catch (Throwable e) {
    				LOGGER.error(e.getMessage(), e);
    			} finally {
    				if (monitor != null) {
    					monitor.done();
    				}
    			}
     
    			return Status.OK_STATUS;
    		}
    	}
    Au premier lancement, le graphique se met à jour correctement, mais quand on relance le process, je sais qu'il y a eu des calculs effectués, mais le graphique ne s'est pas mis à jour !
    A quoi celà peut il être dû ? (j'y ai passé du temps sur ce problème et je pête un câble ! ).

    Si vous avez des pistes de correction ou d'amélioration, je suis tout ouïe ...

    Merci d'avance à tous,

    Très cordialement,

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Il serait bon que tu jettes un oeil dans la vu "Error Log" d'Eclipse pour voir s'il n'y a pas exceptions SWT qui sont remontés après le premier calcul.
    Ensuite, il est toujours bon de tester si un composant SWT n'est pas "disposed" avant de l'utiliser...
    Il faut donc, plutôt, faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // ici, traitement de calculs ... 
    Display.getDefault().syncExec(new Runnable() {
    	@Override
    	public void run() {
    		if (!chart.isDisposed()) {
    			chart.setFocus();
    			chart.redraw();
    			chart.update();
    		}
    	}
    });
    De plus, il vaut mieux, à priori, faire un redraw sur une zone précise plutôt que d'utiliser la méthode sans argument... (cf le Snippet 275 sur le Canvas de SWT).

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

Discussions similaires

  1. Affichage en commande mais pas en graphique
    Par Onitsha dans le forum Debian
    Réponses: 8
    Dernier message: 10/11/2009, 08h35
  2. Réponses: 2
    Dernier message: 09/10/2004, 11h35
  3. Affichage en mode graphique
    Par Bidouille dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 09/09/2004, 11h50
  4. [SWT]SWT et fuite mémoire(ou pas)
    Par menuge dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 22/06/2004, 21h40
  5. [QuickReport][Débutant] Affichage d'un graphique
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/03/2004, 09h03

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