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

AWT/Swing Java Discussion :

[Java6 update2] Rafraichissement de la fenêtre


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 82
    Points
    82
    Par défaut [Java6 update2] Rafraichissement de la fenêtre
    Bonjour,
    J'ai développé une application swing en utilisant le jre 1.4.2_12 et je souhaite à présent l'utiliser avec le jre 1.6.0_02.
    A priori il ne devrait pas y avoir de soucis de compatibilité.

    Mais dans les faits, j'ai trouvé un comportement différent. Lorsque je:
    - clique sur un bouton qui ouvre une fenêtre de type "pop up"
    - ouvre une autre application (un navigateur internet par exemple) puis la réduit ou la ferme (ie la fenêtre active redevient mon application swing)

    certaines parties de la fenêtre disparaissent.
    Je pense qu'elles ne sont tout simplement pas repeintes...

    Avez vous déjà entendu parler de cette différence de comportement?
    Pour corriger ça, il va falloir que je mette des repaint() un peu partout (seulement aux endroits stratégiques bien entendu) mais je ne vois pas où le mettre pour le deuxième cas que je cite.

    Merci d'avance pour vos éclaircissement.
    No guts, no glory

  2. #2
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Alors ça c'est curieux parce que le JRE 6 corrige justement ces problèmes qui étaient dans les versions précédentes.
    Romain Guy
    Android - Mon livre - Mon blog

  3. #3
    Membre régulier Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 82
    Points
    82
    Par défaut
    En effet ça m'a surpris lorsque j'ai lancé l'application pour la première fois.
    Du coup j'ai fait quelques recherches et je suis tombé sur ça:
    le correctif donc, est l'implémentation d'un véritable double buffering au coeur de Swing/AWT/Java2D.
    Cette implémentation supprime la fameux effet de rectangle gris que l'on observe en déplaçant une fenêtre par dessus une application Swing
    Ce qui m'a encore plus surpris!

    J'ai aussi été voir dans les bugs de sun et je suis tombé sur celui là: 6351820 où il est dit d'utiliser swing.handleTopLevelPaint=false

    Je ne sais pas trop l'impact que cela peut avoir.
    Tu as une idée?
    Il y a des recommandations particulières dans le codage?
    No guts, no glory

  4. #4
    Membre régulier Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 82
    Points
    82
    Par défaut
    Procédons par ordre:
    j'ai tout d'abord migré l'application depuis java 1.4 vers java 5.0. Jusque là pas de problème, je n'ai pas constaté de comportement différent.
    La suite logique des opérations est de re-essayer avec java 6.0 et j'ai toujours le même problème: les composants de l'application ne sont pas réaffichés lorsque j'affiche une nouvelle fenêtre devant l'application.
    Il me reste donc à trouver les différence entre java 5.0 et java 6.0.

    J'ai lu que Java SE 6 offre une version totalement refaite de la classe SwingWorker.
    Est-ce qu'il faut que j'aille creuser de ce côté là?
    No guts, no glory

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 230
    Points : 250
    Points
    250
    Par défaut
    question qui peut paraitre inutile mais sur quel OS es tu ?

  6. #6
    Membre régulier Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 82
    Points
    82
    Par défaut
    Windows XP Pro SP2
    No guts, no glory

  7. #7
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 230
    Points : 250
    Points
    250
    Par défaut
    ok , je m'explique pourquoi je pose la question quand meme ( on va m'accuser de troll sinon :p)

    sous linux quand on utilise genre beryl ou ce genre de chose les appli java 2d peuvent ne pas afficher les composant et une petite manip est necessaire

    sinon des bug daffichage sous windows xp je n'en avais que lorsque je forcais ma carte graphique a utilise un antialiasing un peu plus fort que celui par default


    enfin ceci c'etais pour ta partie : partie fenetre non repaint ^^

    je dois avouer que je suis perplexe quant a ton probleme , pas de chance lol

  8. #8
    Membre régulier Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 82
    Points
    82
    Par défaut
    Merci de ton soutien
    No guts, no glory

  9. #9
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 230
    Points : 250
    Points
    250
    Par défaut
    lol j'aurais prefere une fell###### je me tais lol

    non plus serieusement je ne vois pas ce que cela pourrait etre

    sous xp je n'ai qu'un probleme avec swing c'est avec des JTable et encore suffit que je change de L&F pour changer le probleme (tiens a essayer pour toi , au point ou tu en es ...)

  10. #10
    Membre régulier Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 82
    Points
    82
    Par défaut
    Pourquoi pas...
    Mais ce ne sont pas seulement les JTable qui ont des problèmes. C'est tous les composants.
    Par exemple, je crée une petite applet et je la ballade au dessus de mon application affichée à l'écran. Partout sur le chemin de l'applet, les composants sont "effacés".
    Dans un autre contexte ça pourrait être rigolo , mais là c'est plutôt déprimant
    No guts, no glory

  11. #11
    Membre régulier Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 82
    Points
    82
    Par défaut
    Bonjour,
    je restreint le champ d'investigation de mon problème.

    Lorsque je compile mon application et que je la lance en version 5.0, à chaque fois qu'une partie de mon application doit être repeinte (une fenêtre se déplace par dessus par exemple et une partie de l'application redevient visible), il y a un appel à la méthode update(Graphics g, JComponent c) (javax.swing.plaf.ComponentUI.update)
    Par contre, si je fais la même opération avec la version 6, cette méthode n'est pas appelée.

    Ca dit quelque chose à quelqu'un?
    No guts, no glory

  12. #12
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Je dépoussière un vieux post pour savoir s'il existe une solution a ce problème.

    Sinon, si j'ai bien compris, la solution du désespoir, c'est de lancer l'application avec un JRE 1.5.


    Edit: Il semblerait qu'avec l'option "swing.handleTopLevelPaint=false", les problèmes disparaissent.
    Librairie d'accès LDAP en Java : LdapBeans
    et pensez au tag

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/03/2010, 11h14
  2. [PyOpenGL] Rafraichissement de la fenêtre
    Par seeme dans le forum OpenGL
    Réponses: 1
    Dernier message: 02/06/2008, 10h31
  3. Rafraichissement de la fenêtre pendant une boucle
    Par Swann dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/05/2006, 00h09
  4. Rafraichissement d'une fenêtre
    Par barthelus76 dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 24/04/2006, 10h29
  5. Rafraichissement d'une fenêtre.
    Par GETah dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 21/04/2005, 09h33

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