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] Forcer le 'repaint'


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut [SWT] Forcer le 'repaint'
    Bonjour, je met a jour du texte sur mon interface SWT en fonction d'un thread d'indexage (afficher le nombre de fichiers indexés en temps réel)

    Ma 'main window' a la méthode show():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	public void show() {
    		shell.open();
    		while (!shell.isDisposed()) {
    			if (!display.readAndDispatch()) {
    				display.sleep();
    			}
    			if (fileindexthread.isAlive()) {
    				displayFileCount(fileindexthread.getCount());
    			}
    		} 
    		display.dispose();
    	}
    Et ma méthode displayFileCount s'occupe de modifier le texte sur l'interface.

    Mon problème est que le shell se repaint seulement quand je bouge la souris par ou que je deplace la fenêtre par exemple.

    Est-il possible de forcer explicitement le repaint ? (Un appel de méthode que je pourrais faire après displayFileCount)

    Merci!

  2. #2
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Par défaut
    il existe la méthode redraw() de la class Control qui permet de faire ce que tu veux.

    Si tu as besoin d'attendre que le composant ai été repeind tu dois utiliser la méthode update() de cette même classe.

  3. #3
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Par défaut
    Mais il me semble que ton code ne vas pas réaliser ce que tu souhaites car l'appelle de display.sleep() vas mettre le programme en attente jusqu'à ce qu'un événement se produise sur l'interface graphique, s'il ne se passe rien ton code n'iras pas plus loin et tu n'atteindras pas le second if.
    Tu devrais faire des recherches sur comment lancer un traitement long en utilisant un objet de type Display, petit indice... regarde les méthodes finissant par -exec() de la class Display.

Discussions similaires

  1. [PPT-2003] Forcer la reconstruction d'une diapo (excel = Repaint)
    Par mimilll dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 05/06/2009, 16h09
  2. [SWT/TEXT] Forcer mon text à être un long
    Par sanchou dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 14/05/2007, 09h43
  3. Réponses: 4
    Dernier message: 08/10/2006, 15h16
  4. forcer l'appel d une methode apres un repaint
    Par ceres02 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 11/03/2006, 00h17
  5. Forcer l'affichage des dizaines...
    Par pataluc dans le forum Langage
    Réponses: 4
    Dernier message: 26/11/2002, 19h38

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