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 :

probleme performance avec un dragndrop sur un panel avec une image


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 16
    Par défaut probleme performance avec un dragndrop sur un panel avec une image
    Bonjour,

    Je réalise un jeu en java ou j'utilise un dragndrop pour déplacer des cases sur une grille.
    J'ai réussi à faire un dragndrop sans trop de difficultés en m'inspirant d'ailleurs d'un très bon article dans la faq java sur ce site.

    Et donc cela fonctionne très bien, le déplacement de mes boutons sur la grille se font très bien.
    Le hic c'est que maintenant sur le JPanel de fond ou y la grille avec l'ensemble de mes cases, j'ai mis une image de fond.
    Pour ce faire j'ai crée une classe héritant de JPanel et redéfinit la méthode paintComponent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void paintComponent(Graphics g) {
         boolean test = g.drawImage(image, 0, 0, this);
     
     
        }
    L'image s'affiche bien pas de soucis à ce niveau là. Mais lorsque je drag un de mes boutons, l'application rame à mort, et le déplacement des jetons devient difficile voire impossible.
    En faisant un petit system.out.println dans la fonction paintComponent, je me suis rendu compte que le fait que lors du dragndrop la méthode paintComponent était appellé à chaque déplacement ne serait ce que d'un pixel, et je pense que c'est ça qui fait ramer. C'est une image du fond sur l'ensemble du panel et ca doit être trop gourmand pour être réaffiché plus de 1000 fois à chaque mouvement de souris


    Quelle solution pourrai je utiliser soit pour éviter que la méthode paintComponent du panel soit appelée lorsque je dragndrop un composant dessus. Ou alors y a t-il un moyen d'optimiser les performances, ou ma méthode pour afficher l'image de fond du panel n'est pas la bonne ?

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    tu peux peut-être utiliser le clip du Graphics et d'appeler image.getSubImage afin de ne mettre à jour que la partie qui a changé, mais je ne suis pas sûr que tu gagnes du temps.

    Que fais tu dans la méthode mouseDragged ? On peut voir plus de code ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/12/2008, 00h28
  2. avec click sur un lien, ouvrir une image dans une page html
    Par Bydouille dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 17/10/2007, 20h40
  3. Réponses: 4
    Dernier message: 07/06/2006, 14h23
  4. Ouvrir une fenetre avec l'heure sur écran externe avec X11
    Par jamesleouf dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 20/03/2006, 14h56
  5. Problem avec les *.AVI sur les panels
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/08/2003, 22h50

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